-3
char配列のポインタを引数(char ** messageErreur)として受け取る関数があります。そのポインタはメインで作成されますが、必要な場合にのみ作成されるため、メモリは割り当てられません(表示するエラーメッセージ)(ここでの選択はありません。このメソッドは変更不可能な.hファイルに由来します)。ここmallocによって作成された文字列を読み取ることができません
は、私がセグメンテーションフォールトを取得するコードです:
imageMsgErr (messageErreur, "error message");
printf("erreur1 P2\n");
printf("message erreur %s\n", *messageErreur); //**where i get the seg fault
void imageMsgErr (char** messageErreur, char* msg){
messageErreur= (char**)malloc(sizeof(char*));
messageErreur[0]= (char*)malloc(sizeof (char) * 100);
if (*messageErreur){
printf("before strcpy\n");
strcpy(*messageErreur, msg);
printf("message erreur %s\n", *messageErreur);
}
return;
私は同じ結果といくつかの類似したコードを試してみました:それはライン実行時にセグメンテーションフォールト:
printf("message erreur %s\n", *messageErreur);
は、なぜあなたはmalloc' 'からの戻り値をキャストしていますか? –
'-g'フラグでコードをコンパイルし、' --leak-check = full'オプションでプログラム上で 'valgrind'を実行し、その出力をあなたの質問に含めます。 –
あなたはおそらくこれを読むべきです:http://stackoverflow.com/questions/2838038/c-programming-malloc-inside-another-function/2838207#2838207 – jamesdlin