Итак, я пишу этот код здесь, и я просто хочу, чтобы функция возвращала массив символов и присваивала его переменной в основной функции. Вот функция, возвращающая символ *
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 работает и назначение не выполняется? Может кто-нибудь сказать мне, что я здесь делаю не так?