C++ 声明一个(未使用的)整数导致整个程序出现故障?

C++ 声明一个(未使用的)整数导致整个程序出现故障?,c++,debugging,variables,C++,Debugging,Variables,为了显示这个不断出现的奇怪错误,我已经尽可能地减少了代码 我这里有一个很好用的程序: #include <iostream> using namespace std; int main() { int * elements; // int size = 10; for(int i = 0; i < 10; i++) { elements[i] = 0; } for(int i = 0; i < 10; i++) {

为了显示这个不断出现的奇怪错误,我已经尽可能地减少了代码

我这里有一个很好用的程序:

#include <iostream>
using namespace std;
int main() {
    int * elements;
    // int size = 10;
    for(int i = 0; i < 10; i++) {
        elements[i] = 0;
    }
    for(int i = 0; i < 10; i++) {
        cout << "Hi";
    }
    return 0;
}
#包括
使用名称空间std;
int main(){
int*元素;
//int size=10;
对于(int i=0;i<10;i++){
元素[i]=0;
}
对于(int i=0;i<10;i++){

cout注释掉的
int
与您的错误无关

您尚未为
元素
指针(数组)分配任何内存:

声明指向
int
的指针,但没有为整数数组分配空间


访问您不拥有的内存是未定义的行为。

未使用的整数与您的问题无关

您没有为
元素
指针分配任何内存。您试图从此未初始化的指针访问十个元素。您的程序具有未定义的行为,即使它看起来正常工作,也是错误的

然而,我仍然不明白如何以某种方式输入“int size=10” 阻止程序崩溃


未定义的行为意味着任何事情都可能发生,看似无害的代码片段可能会导致程序具有不同的行为,即使这些代码片段与实际的违规代码没有明显的关系。这就是为什么称该行为为“未定义”

您忘记分配内存来存储这些元素。结果,您访问的内存没有准备好,并且得到了未定义的行为,任何事情都可能发生。您应该考虑使用<代码> vector < /C> > s,比指针更容易和更安全。

#include <iostream>
#include <vector>  //  You must include this to get vectors
using namespace std;
int main() {
    vector<int> elements(10); // to create space for 10 ints
    // int size = 10;
    for(int i = 0; i < 10; i++) {
        elements[i] = 0;
    }
    for(int i = 0; i < 10; i++) {
        cout << "Hi";
    }
    return 0;
}
#包括
#include//必须包含此项才能获取向量
使用名称空间std;
int main(){
向量元素(10);//为10整数创建空间
//int size=10;
对于(int i=0;i<10;i++){
元素[i]=0;
}
对于(int i=0;i<10;i++){

cout“这是一个我以前从未见过的奇怪错误”-不,不是!初学者一直都在这样做…感谢您将代码缩减到演示此问题的最小大小。
#include <iostream>
#include <vector>  //  You must include this to get vectors
using namespace std;
int main() {
    vector<int> elements(10); // to create space for 10 ints
    // int size = 10;
    for(int i = 0; i < 10; i++) {
        elements[i] = 0;
    }
    for(int i = 0; i < 10; i++) {
        cout << "Hi";
    }
    return 0;
}