私は持っているCコードのビットで問題を見つけることを試みています。デバッガは、私は、ポインタからMEMを解放しようとすると、エラーが発生したことを言う:セグメンテーションフォールトfree()in cを使用
int main(int argc, char *argv[]){
char *desc = malloc(30 * sizeof(char));
if(desc == NULL)
{
fprintf(stderr, "Error - cannot allocate memory\n");
}
desc = "Debug this program.";
printf("Description: %s\n", desc);
free(desc);//break point here
int cpid = fork();
....
リテラル文字列のアドレスを解放しようとしていますが、これは不正です。 – LPs
さらに、文字列リテラルから割り当てられたポインタを割り当てることは、ほとんど常に間違っています。リテラルを 'desc'にコピーしたい場合は' strcpy'を使います。 – Actorclavilis
'sizeof(char)'は常に1であることに注意してください。これはオブジェクトサイズの単位です。 –