繁体   English   中英

分配给char *时出现细分错误

[英]Segmentation fault on assigning to char*

因此,我在这里编写此代码,我只希望一个函数返回一个字符数组,并将其分配给main函数中的变量。 这是返回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;
}

这是我主要要做的

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可以工作并且分配失败? 有人可以告诉我我在做什么错吗?

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

它仅在main()一种情况下发生段错误的事实简直就是运气(未定义的行为); 您也在printf()调用printf()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM