所以我在我的程序中使用malloc,然後在程序內部的一個方法中重新分配。在我多次調用這個方法後,我會得到一個「Segmentation fault(核心轉儲)」。例如,當我的指針從0x25d7d60或0x223fae0(或由7位數字(0xHHHHHHH)代表的任何地址)變爲0x7f47d370a010(超過7位數字)時,我意識到出於某種原因,出現了段錯誤在realloc調用中,realloc甚至不會返回NULL。我通過簡單地使用malloc和memcpy來解決這個問題。然而,我很困惑,爲什麼發生這種情況,並想看看是否有任何用戶的stackoverflow可以揭示爲什麼發生這種情況。Segfault with realloc
感謝
下面是相關代碼:
unsigned int* myArray;
unsigned int num_ints;
int main()
{
num_ints = 100;
if((myArray =(unsigned int*) malloc(sizeof(unsigned int)*(num_ints)*3))==NULL)
{
std::cout << "Malloc failed!" << std::endl;
return false;
}
.
.
.
//This called when n key is pressed (code left out)
methodName();
return true;
}
void methodName()
{
if((myArray =(unsigned int*) realloc(myArray,sizeof(unsigned int)*(num_ints*4)*3))==NULL)
{
std::cout << "Realloc failed!" << std::endl;
exit(0);
}
}
請將代碼顯示出來 – phoxis
請代碼 –
它應該是C還是C++?爲什麼它被標記爲C但仍使用'std :: cout'? – AnT