У меня есть функция, которая получает указатель массива 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', запустите' valgrind' в своей программе с опцией '--leak-check = full' и включите его вывод в свой вопрос. –
Вы, вероятно, должны это прочитать: http://stackoverflow.com/questions/2838038/c-programming-malloc-inside-another-function/2838207#2838207 – jamesdlin