【问题标题】:Segmentation fault (core dumped) error not resolved分段错误(核心转储)错误未解决
【发布时间】:2016-06-19 03:18:05
【问题描述】:
#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;}

我遇到分段错误: 输出: 输入您希望动态存储的字符长度 5 分段错误(核心转储) 我无法弄清楚我犯的错误? 我尝试在调试器模式下运行,但没有为它生成核心文件。? 请提出解决方案。

【问题讨论】:

  • 您的错误在这里:if(buffer=NULL)。这会将buffer 设置为NULL。我想你想要if (buffer == NULL)。或者更好,if (NULL == buffer)

标签: c++ c++11


【解决方案1】:

buffer=NULL 是一个分配。它将被评估为 false,buffer[n]=rand()%26+'a'; 将取消引用分配的 NULL

改为比较buffer==NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2014-08-04
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多