pointer/struct free() - 堆损坏

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);

有人可以向我解释一下,我在这里缺少什么吗?

谢谢。

这是因为你分配的是指针而不是新结构

sizeof(tElemPtr) 将 return 指针的大小而不是结构的大小。