这段代码有什么原因不起作用吗?
char* toString(struct number *this) {
char *res;
if (!this) {
res = malloc(sizeof(char));
*res = '\0';
return res;
}
*/
other working code
*/
}
当我尝试使用printf打印它时出现“分段错误”:
char *s = toString(NULL);
printf("%s\n", s);
感谢。
答案 0 :(得分:3)
我打赌原始资料看起来像这样:
struct number
{
int i;
}
int main()
{
char * s = toString(NULL);
printf("%s\n", s);
return 0;
}
char * toString(struct number * this)
{
char *res;
if (!this) {
res = malloc(sizeof(char));
*res = '\0';
return res;
}
/*
other working code
*/
}
如果是这种情况,请在main()
之前添加此原型:
char * toString(struct number *this);
而且:从现在开始,始终使用所有警告进行编译,以防将来再次发生这种情况......: - )
答案 1 :(得分:0)
如果malloc(1)
失败,引用的代码将崩溃。我没有看到任何其他原因。请添加更多代码。
无论如何,只需使用调试器(gdb)。让它崩溃并找到原因...