C语言 pointer/struct free() - Heap Corruption



我有一个小问题,但很烦人。

这是我的结构。

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)将返回指针的大小,而不是结构的大小。

最新更新