我有一个函数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 *)'。这里并不重要,因为指向一种类型的指针的大小与指向另一种类型的指针的大小相同,只是想指出这一点。 –