在线编译器和 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吗? 32212257250xc00000fd 相同,表示堆栈溢出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&lt;vector&gt;...我大约2周前开始使用cpp...并且还没有遇到#include&lt;vector&gt;...那么有什么替代方法吗? 如果您想保留非标准 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的解决办法

vscode 编辑器如何彻底卸载

vscode 编辑器如何彻底卸载