【问题标题】:Segmentation fault on assigning to char*分配给 char* 时出现分段错误
【发布时间】: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


    【解决方案1】:

    您在函数中注释掉了终止字符串的行。

    它仅在main() 的一种情况下出现段错误这一事实只是运气(未定义的行为);你也在你的函数中调用printf()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2021-03-12
      相关资源
      最近更新 更多