在线编译器和 VScode Insiders 上的分段错误让我 [Done] exited with code=3221225725
Posted
技术标签:
【中文标题】在线编译器和 VScode Insiders 上的分段错误让我 [Done] exited with code=3221225725【英文标题】:Segmentation Fault on an Online Compiler and VScode Insiders gives me [Done] exited with code=3221225725 【发布时间】:2021-07-07 14:51:57 【问题描述】:使用用户输入创建矩阵并在其中搜索元素的程序。 在 Online Compiler 和 VScode Insiders 上编译时出现分段错误让我 [Done] 在 1.181 秒内以 code=3221225725 退出。
Online Compiler used.
VScode+MingW也用过。
#include<iostream>
using namespace std;
int main()
int p;
do
int i,j,k,m;
int a[j];
m=0;
cout<<"Enter The Number Of Elements You Want In Your Array.\n";
cin>>j;
cout<<"Give Your Input For The Array.\n";
for(i=0;i<j;i++)
cin>>a[i];
cout<<endl<<"Your Array Is:\n";
for(i=0;i<j;i++)
cout<<a[i]<<endl;
cout<<"Enter The Number You Want To Check.\n";
cin>>k;
for(i=0;i<j;i++)
if(a[i]==k)
m=1;
if(m==1)
cout<<"You Number "<<k<<" Is Listed.\n";
else
cout<<"You Number "<<k<<" Is Not Listed.\n";
cout<<"If You Want A Re-Run Press 1 Or Else Press Any Other Number.\n";
cin>>p;
while(p==1);
return 0;
【问题讨论】:
你看过your compiler's warnings吗?3221225725
与0xc00000fd
相同,表示堆栈溢出reddit.com/r/learnpython/comments/enp7oy/…
@drew 是的..那里没有错误。
你应该调整你的编译器参数来警告这个。如果编译时启用了警告,您应该得到与 @DrewDormann 相同的警告。并注意警告,因为它们表明可能存在损坏的代码。
@drescherjm 我没有这样理解..但是还是谢谢你????
【参考方案1】:
int a[j];
以未初始化的j
执行。另请注意,可变长度数组 (VLA) 不在标准 C++ 中。你应该改用std::vector
。
#include<iostream>
#include<vector> // add this to use std::vector
using namespace std;
int main()
int p;
do
int i,j,k,m;
// delete this
//int a[j];
m=0;
cout<<"Enter The Number Of Elements You Want In Your Array.\n";
cin>>j;
// allocate an array *after* reading j
std::vector<int> a(j);
cout<<"Give Your Input For The Array.\n";
for(i=0;i<j;i++)
cin>>a[i];
cout<<endl<<"Your Array Is:\n";
for(i=0;i<j;i++)
cout<<a[i]<<endl;
cout<<"Enter The Number You Want To Check.\n";
cin>>k;
for(i=0;i<j;i++)
if(a[i]==k)
m=1;
if(m==1)
cout<<"You Number "<<k<<" Is Listed.\n";
else
cout<<"You Number "<<k<<" Is Not Listed.\n";
cout<<"If You Want A Re-Run Press 1 Or Else Press Any Other Number.\n";
cin>>p;
while(p==1);
return 0;
【讨论】:
你好@MikeCat...谢谢您的回复...但我现在还没有学习#include<vector>
...我大约2周前开始使用cpp...并且还没有遇到#include<vector>
...那么有什么替代方法吗?
如果您想保留非标准 VLA,您需要在检索 j
的值之后而不是之前将 int a[j];
移动到。 c++
从顶部开始逐行执行您的代码(忽略优化器)
@drescherjm 那么我应该在接受用户输入后声明我的数组吗?
是的,因为在那之前j
还没有被初始化。你告诉你的编译器使用这个未初始化的/垃圾值作为大小来创建一个大小为j
的数组。数组的大小不是动态的。以后j
更改时不会更改。
@drescherjm 非常感谢你..真的帮助了我..工作..以上是关于在线编译器和 VScode Insiders 上的分段错误让我 [Done] exited with code=3221225725的主要内容,如果未能解决你的问题,请参考以下文章
VScode insiders删除多余的SSH targets
“An SSH installation couldn‘t be found“ - VScode无法远程接连Linux - Visual Studio Code - Insiders
如何彻底删除Visual Studio Code Insiders,包括扩展
解决Visual Studio Code - Insiders远程开发的文件权限问题 - Ubuntu不能用root的解决办法