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;
}