我有一个小问题,但很烦人。
这是我的结构。
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);
有人能给我解释一下吗,我在这里缺了什么?
谢谢。
这是因为您正在对一个指针进行mallocing,而不是一个新的结构
sizeof(tElemPtr)
将返回指针的大小,而不是结构的大小。