#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;}
我得到分段错误: 输出: 输入要动态存储的字符长度 五 分段故障(核心转储) 我无法弄清楚我做错了什么? 我试图在调试器模式下运行,但是没有为它生成核心文件。 请建议解决方案。
答案 0 :(得分:1)
buffer=NULL
是一项任务。它将被评估为false,buffer[n]=rand()%26+'a';
将取消引用指定的NULL
。
改为比较buffer==NULL
。