该程序完美运行:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM 2
int tempfunction (char **comments)
{
char str1[]="First string\n";
char str2[]="This is the second string\n";
*(comments+0)=(char *) malloc(strlen(str1)+1);
*(comments+1)=(char *) malloc(strlen(str2)+1);
strcpy(*(comments+0), str1);
strcpy(*(comments+1), str2);
return 0;
}
int main(void)
{
char **comments;
/* This is the section I am talking about */
comments=(char **) malloc(MAX_NUM*sizeof(char *));
if (comments==NULL)
{
printf("\n### ERROR: malloc failed.\n");
exit(EXIT_FAILURE);
}
/* Upto here............................. */
tempfunction(comments);
printf("%s%s", comments[0], comments[1]);
return 0;
}
但为了以后方便,我想把malloc
部分放在tempfunction
. 当我这样做时,我得到一个分段错误错误。
我认为这可能是由于初始化,所以char **comments;
我不写:
char a = 'a';
char *P = &a;
char **comments = &P;
但是,它仍然不起作用。如果您能帮助我理解为什么会发生这种情况以及如何解决它,我将不胜感激。