执行完所有C代码后,我得到了segementation错误。它生成零字节内存泄漏的必需输出。之后,显示“分段故障”。以下是gdb
输出。执行整个代码后得到“分段错误”
Program received signal SIGSEGV, Segmentation fault.
0x08060f90 in _GLOBAL_OFFSET_TABLE_()
(gdb) bt
#0 0x08060f90 in _GLOBAL_OFFSET_TABLE_()
#1 0xffbecd18 in ??()
#2 0x15048815 in ??()
#3 0xcd0fbecd in ??()
#4 0x0610ffbe in ??()
#5 0xffbecd08 in ??()
#6 0xf7f79ff4 in ??() from /lib/tls/libc.so.6
#7 0x00000000 in ??()
(gdb)
编辑
char **Connections,**Doors,**Zones;
char *s1,*s2;
char con[] = "c_";
char zon[] = "z_";
char dor[] = "d_";
for (i=0; i<nc ; i++){
s1 = con;
s2 = string_IntToString(i);
Connections[i]= string_Conc(s1,s2);
string_StringFree(s2);
}
编辑
char* string_Conc(const char* s1, const char* s2)
{
char* dst;
dst = memory_Malloc(strlen(s1) + strlen(s2) + 1);
strcpy(dst, s1);
return strcat(dst,s2);
}
通过查看可能损坏的堆栈跟踪很难说出任何内容。真正的错误可能在任何地方,很可能是缓冲区溢出或类似的东西。除了仔细查看代码并尝试评论它的各个部分之外,很难推荐任何东西,检查错误是否仍然存在。 – 2011-01-24 10:40:34