У меня здесь небольшая, но неприятная проблема.
Итак, вот мои структуры.
typedef struct tElem {
struct tElem *ptr;
int data;
} *tElemPtr;
typedef struct {
tElemPtr Act;
tElemPtr First;
} tList;
А вот и распределение. Здесь происходит повреждение кучи .
tElemPtr newElemPtr = (tElemPtr)malloc(sizeof(tElemPtr));
.
.
.
free(newElemPtr);
Но этого не происходит, когда я использую размер реальной конструкции.
tElemPtr newElemPtr = (tElemPtr)malloc(sizeof(struct tElem));
.
.
.
free(newElemPtr);
Не мог бы кто-нибудь объяснить мне, что мне здесь не хватает?
Спасибо.
1 ответ
Это потому, что вы нарушаете указатель, а не новую структуру
sizeof(tElemPtr)
вернет размер указателя, а не размер структуры.
Похожие вопросы
Связанные вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.