指针/结构free-堆损坏

问题描述

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

这是我的结构。

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

有人可以告诉我,我在这里想念什么吗?

谢谢。

解决方法

这是因为您正在分配一个指针而不是一个新的结构

SELECT p.id,row_to_json(r.id) FROM person p FULL OUTER JOIN ref_first_nations_gov r on r.id = p.first_nation_id WHERE p.application_id = 1 AND p.archived = false; 将返回指针的大小,而不是结构的大小。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...