나는 기능이에 x86 컴퓨터에서 잘 실행 호출realloc과의 86 x86_64의
void *srealloc(void * ptr , int size){
void *tmp = realloc(ptr , size);
if(tmp == NULL){
fprintf(stderr,"realloc of %u bytes failed", size);
exit(1);
}
return tmp;
}
내 코드를 가지고,하지만 난 컴파일하여 x64 컴퓨터에서 동일한 코드를 실행할 때 나는 세그먼트 폴트를 얻을.
호출되는 방법 이것의 예는 :
line = "Some string";
buffer = (char**) srealloc (buffer,sizeof(buffer)*(++buffer_lines));
buffer[buffer_lines-1] = line;
srealloc이 크기 == 상기 segfaulting 컴퓨터 PTR == 0x0으로 8
를 호출 할 때 I는 GDB 끝까지 추적 * 편집 : 는 segfault가에 발생합니다
void *tmp = realloc(ptr, size);
어떻게'buffer'가 선언 되었습니까? – zneak
라인은 char * – LeeG
입니다.'sizeof (buffer)'는 char_를 가리키는 _pointer의 크기입니다. 올바른 것이기 위해서는'sizeof (char *)'를 사용해야한다. 하나의 타입에 대한 포인터의 크기가 다른 타입에 대한 포인터와 같기 때문에 여기서는 그다지 중요하지 않습니다. –