分段错误(核心转储)错误未解决

时间:2016-06-19 03:18:05

标签: c++ c++11

#include<iostream>
#include<cstdlib>
using namespace std;

int main(){

int i,n;
char * buffer=NULL;
i=0;
cout<<"enter the character length you wish to store dynamically"<<endl;
cin>>i;

buffer= (char*) malloc(i+1);
if(buffer=NULL)
exit(1);
for(n=0;n<i;++n)
buffer[n]=rand()%26+'a';
buffer[i]='\0';

cout<<"the string is "<<buffer<<endl;
free(buffer);
return 0;}

我得到分段错误: 输出: 输入要动态存储的字符长度 五 分段故障(核心转储) 我无法弄清楚我做错了什么? 我试图在调试器模式下运行,但是没有为它生成核心文件。 请建议解决方案。

1 个答案:

答案 0 :(得分:1)

buffer=NULL是一项任务。它将被评估为false,buffer[n]=rand()%26+'a';将取消引用指定的NULL

改为比较buffer==NULL