그래서 내 프로그램에서 malloc을 사용하고 프로그램 안의 메서드 내에서 realloc을 사용했습니다. 이 메서드를 여러 번 호출 한 후에 "분할 오류 (코어가 덤프 됨)"가 발생합니다.Segfault with realloc
추가 검사시, 예를 들어 내 포인터가 0x25d7d60 또는 0x223fae0 (또는 7 자리 숫자 (0xHHHHHHH)로 표시되는 주소)에서 0x7f47d370a010 (7 자리 숫자 이상)으로 갈 때 어떤 이유로 인해 segfault가 발생합니다. realloc 호출 내에서 realloc은 NULL을 반환하지 않습니다. malloc을 사용한 다음 memcpy를 사용하여이 문제를 해결했습니다. 그러나 나는 왜 이런 일이 일어 났는지에 대해 혼란스러워하며 stackoverflow 사용자가 왜 이런 일이 일어 났는지에 대해 알 수 있기를 원합니다.
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