Обычно я создаю себе структуру и выделяю память для структуры, а иногда и для буферов внутри структуры. Вроде так:Разница между указателями при malloc
typedef struct A
{
char *buffer;
int size;
} A;
Тогда, когда я malloc для структуры, я это делаю. (Я узнал, не метать возвращение таНос здесь на SO.)
X
A *a = malloc(sizeof(a));
a->buffer = malloc(10*sizeof(a->buffer));
Какая разница между X и Y этого?
Y
A *a = malloc(sizeof(*a));
a->buffer = malloc(10*sizeof(a->buffer));
Они, кажется, делают то же самое.
Я предполагающих ваши 'buffer' указатель указывает на произвольное количество данных? Это не ясно из вашего фрагмента кода. В этом случае 'a-> buffer = malloc (sizeof (a-> buffer)" неверен, поскольку он всегда будет выделять только 4 байта или 8 байтов в зависимости от того, находитесь ли вы на 32-битной или 64-битной машине. – lurker
разница в том, что 'sizeof (a *)' является синтаксической ошибкой, тогда как 'sizeof (a)' более тонко неверно. –
Почему вы хотите выделить в 10 раз размер буфера для нашего буфера? – lurker