我有一個函數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;
}
我的代碼調用此運行在x86計算機上很好,但是當我編譯和我的x64計算機上運行相同的代碼,我收到了段錯誤。
正在被呼叫的如何一個例子是:
line = "Some string";
buffer = (char**) srealloc (buffer,sizeof(buffer)*(++buffer_lines));
buffer[buffer_lines-1] = line;
當我用gdb跟蹤通過時srealloc被稱爲計算機段錯誤PTR ==爲0x0上,大小== 8
*編輯: 段錯誤發生在:
void *tmp = realloc(ptr, size);
如何聲明緩衝區? – zneak
行是char * – LeeG
請注意'sizeof(buffer)'是指向char_的指針的_pointer的大小。爲了正確,你應該使用'sizeof(char *)'。這裏並不重要,因爲指向一種類型的指針的大小與指向另一種類型的指針的大小相同,只是想指出這一點。 –