正在删除导致分段错误的cout语句
Removing cout statement causing segmentation fault
这是我程序中的一个函数。有了cout语句,程序就会编译并运行。如果我删除cout语句,我会返回一个分段错误。我在linux mint上使用G++编译器。有人对此有什么想法吗?
int findFactors(int n,int factors[],int numFactors)
{
int m=n;
int k=2;
int i;
while(m!=1)
{
for(k=2;k<=m;k++)
{
if(m%k==0)
{
factors[i]=k;
cout<<"Prime Factor: "<<factors[i]<<endl;//This is the offending statement!
factors[i++];
numFactors++;
break;
}
}
m=(m/k);
}
return numFactors;
}
i
未初始化,因此访问factors[i]
是未定义的行为,任何事情都可能发生。
另外,语句factors[i++];
应该做什么?
我对此有着与大多数程序可能进行错误内存访问时相同的想法:在valgrind下运行它。Valgrind会在程序崩溃之前为您发现并报告许多常见错误,或者在某些情况下,即使它从未崩溃。
如果你不能运行valgrind(例如,你的平台没有它),你至少可以在调试器中运行你的程序,并告诉我们它在哪一行崩溃。
相关文章:
- std::cout输出int时出现编译错误
- C++代码停止工作错误使用cout内部函数
- cout 新创建的对象引发运行时错误
- 错误:在尝试检测 std::cout 是否<< t 时,功能强制转换为数组类型;有效
- 错误:三元运算符无法在对象中正常工作"cout"
- 如何摆脱错误c2061;语法错误 cout?
- 我收到一个断言错误,但是当我编写 cout 语句时,它会消失
- 删除cout会导致分段错误
- 如何解决"cout was not declared in this scope"错误?
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 一个语句中没有多个 cout 的错误/警告
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 为什么<<低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误,并使代码易于编译
- 引用 std::cout 会导致段错误
- Bjarne Stroustrup PPP - 第 9 章 演练 4 - cout 枚举错误
- 尽管我的功能和cout语句的放置错误,但我的程序为什么会起作用
- 分段错误,当使用 cmake 编译而不使用 cout 编译时
- 重新打开和 cout 创建内部错误
- 错误:cout 未声明,并且给我带来了编译问题
- 多级继承错误"cout does not name a type"