我想在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