void * Space(void *empty, size_t s)
{
empty = malloc(s);
return empty;
}
int main()
{
int *p = NULL;
p = Space(p, sizeof(int));
*p = 7;
return 0;
}
Вы можете изменить функцию Space
, чтобы она возвращала void *
или int *
.Переменная empty
является копией указателя в main
.Когда вы изменяете значение в Space
, поскольку оно является копией, изменение никогда не вернется к main
.
Я изменил sizeof(p)
на sizeof(int)
.Это скорее личное предпочтение, но я стараюсь указывать только типы в качестве аргумента sizeof
.Вы можете получить удивительные результаты, если примените sizeof
к переменным.
Мне очень нравится ответ @ DIMMSum, но я знаю, что указатель на указатель может сбивать с толку, особенно при запуске.