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 指针的大小而不是结构的大小。
我这里有一个小问题,但很烦人。
这是我的结构。
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 指针的大小而不是结构的大小。