2016-06-19 5 views
0
#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

あなたのエラーは 'if(buffer = NULL)'です。これは 'buffer'を' NULL'に設定します。私はあなたが 'if(buffer == NULL)'を望んだと思います。または、おそらくもっと良い、 'if(NULL ==バッファ)'。 – md5i

答えて

1

buffer=NULLは割り当てです。それは偽と評価され、buffer[n]=rand()%26+'a';は割り当てられたNULLを逆参照します。

代わりに比較buffer==NULLを実行してください。

関連する問題