繁体   English   中英

指向指针的分段错误

[英]Segmentation fault with pointer to pointer

我有以下代码:

int main(){   
int j,rows,columns;
int i;
char **text;
char **final;

rows=45;
columns=7;


text=malloc(2*sizeof(char));

for(i=0;i<2;i++)
      text[i]=malloc(3*sizeof(char));


final=malloc(rows*sizeof(char));

for(i=0;i<rows;i++){
            final[i]=malloc(columns*sizeof(char));
                      }

for(i=0;i<2;i++)
 for(j=0;j<3;j++)
      text[i][j]='a';

for(i=0;i<rows;i++){
 printf("i %d\n",i);
          for(j=0;j<columns;j++){
        printf("j %d\n",j);
                   final[i][j]='a';
          }
}

printf("%s\n%s\n",final[0],text[0]);


}

当我运行它时,使用“文本”指针一切都很好,但是使用“最终”指针则没有问题。 当我尝试用“ a”初始化“最终”时,出现分段错误消息。 特别是当i = 14和j = 0时出现此消息。有人可以告诉我为什么吗?

线

final=malloc(rows*sizeof(char));

text=malloc(2*sizeof(char));

char分配空间。 但是,您需要指针 ,因为malloc返回一个指针 ,该指针不适合char
替换为

final=malloc(rows*sizeof(char*));

text=malloc(2*sizeof(char*));

笔记:

  • 如果您不知道:由于标准定义sizeof(char) == 1 ,则可以省略sizeof(char)的乘法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM