【发布时间】:2011-10-22 04:44:25
【问题描述】:
所以我在这里编写这段代码,我只是想要一个函数返回一个字符数组并将它分配给主函数中的一个变量。这是返回 char* 的函数
char* getString(pid_t pid, long address, long length)
{
char* str = (char *)malloc((length+1) * sizeof(char));
int i =0;
while (i < length)
{
char t = ptrace(PTRACE_PEEKDATA,pid,address+i,0);
str[i] = t;
i++;
}
// str[length] = '\0';
printf(" Exiting getString %s \n ", str);
return str;
}
这就是我在 main 中所做的事情
int main {
...
...
char* st = getString(pid, arguments[1], arguments[2]); // causes seg fault
// printf("getstring %s\n", getString(pid, arguments[1], arguments[2])); works fine
// and produces correct output
return 1;
}
我最近在 C 方面做得不多,所以也许我遗漏了一些东西,但为什么 printf 有效并且分配失败?有人可以告诉我我在这里做错了什么吗?
【问题讨论】:
标签: c char segmentation-fault