我想在C编写一个代码,我面临的问题是realloc。该代码在某个时间点工作正常,但在另一次realloc期间崩溃并出现堆损坏错误。 我已经粘贴了填充数据的结构和函数。任何人都可以告诉我,如果我在这里做错了什么。Realloc导致堆损坏
typedef struct MyDataStructureStr
{
MyDataStructureStr()
{
val1 = -1;
val2 = -1;
}
int val1;
int val2;
} MyDataStructureStr, *MyDataStructurePtr;
typedef struct MyStructureStr
{
MyStructureStr()
{
connector = NULL;
counter = 0;
}
MyDataStructurePtr connector;
int counter;
}MyStructureStr, *MyStructurePtr;
static void storeData(int first, int second)
{
if(myStruct->connector == 0)
myStruct->connector = (MyDataStructurePtr)malloc(sizeof(MyDataStructureStr);
else
myStruct->connector = (MyDataStructurePtr)realloc(myStruct->connector, sizeof(MyDataStructureStr) * (myStruct->counter + 1));
myStruct->connector[myStruct->counter].val1 = first;
myStruct->connector[myStruct->counter].val2 = second;
myStruct->counter++;
}
欢迎任何建议。 在此先感谢
你混合C和C++的最好办法,C有没有构造函数。请记住,当您使用malloc分配存储时,您的构造函数不会被调用。确保myStruct-> counter和myStruct->连接器得到初始化,并确保在执行realloc()时它们具有适当的值 – nos
对我来说看起来像合法C.这不是在C++存在之前如何在C中做对象吗?显然构造函数等将需要手动调用。 – abligh
@MichaelFoukarakis今天早上没有足够的咖啡。我错过了'构造函数'在typedef中的事实,并没有手动的'this'参数等。Apols。 – abligh