gpt4 book ai didi

无法读取由 malloc 创建的字符串

转载 作者:行者123 更新时间:2023-11-30 21:08:28 25 4
gpt4 key购买 nike

我有一个函数,它接收 char 数组的指针作为参数(char** messageErreur)。该指针在 main 中创建,但不分配内存,因为仅在必要时创建它(显示错误消息)(此处没有选择,该方法来自不可更改的 .h 文件)。

这是我遇到段错误的代码:

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);

最佳答案

线路

messageErreur= (char**)malloc(sizeof(char*));

仅在函数中更改本地 messageErreur 指向的位置。它不会改变调用函数中相应变量所指向的位置。

修复此问题的一种简单方法是稍微更改功能。

char** imageMsgErr (char* msg)
{
char** messageErreur = malloc(sizeof(char*));
messageErreur[0]= malloc(sizeof (char) * 100);

if (*messageErreur){
printf("before strcpy\n");
strcpy(*messageErreur, msg);
printf("message erreur %s\n", *messageErreur);
}
return messageErreur;
}

并将调用更改为:

messageErreur = imageMsgErr("error message");

PS

参见Do I cast the result of malloc?

关于无法读取由 malloc 创建的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com