Qt C++类变量未初始化
Qt C++ class variable uninitialized
平台
操作系统->ubuntu 15.10 x64IDE->qt创建者cxx->clang x64
未初始化的变量"a b c d e f g h",但当运行"b e g"时,值始终为零;为什么?
代码
enter code here
#include <iostream>
#include <stdio.h>
using namespace std;
class A {
public:
A() {}
void show() {
int e;
int f;
int g;
int h;
printf("value show a = 0x%08X , b = 0x%08X , c = 0x%08X , d = 0x%08Xn", a, b, c, d);
printf("value show e = 0x%08X , f = 0x%08X , g = 0x%08X , h = 0x%08Xn", e, f, g, h);
printf("mapid show e = 0x%08X , f = 0x%08X , g = 0x%08X , h = 0x%08Xn", &e, &f, &g, &h);
}
private:
int a;
int b;
int c;
int d;
};
int main()
{
A aaa;
aaa.show();
int a;
printf("0x%08xn", a);
while(1);
return 0;
}
您使用的是未初始化的变量。在变量中找到的"随机垃圾"取决于堆栈中的数据。堆栈上的数据或多或少是随机的
你会发现有些变量是零,因为堆栈在那个地方是零。堆栈为零的原因可能是随机的,但也可能取决于您的程序。
每个函数调用都会操作堆栈,因此可能会发生这样的情况,即一些零是之前调用的一些函数的"剩余部分"。如果你认为你的程序以前没有调用过任何函数,你最好检查一下机器代码。有很多事情正在发生,在你意想不到的地方…
你可以在这里阅读更多关于堆和堆栈的信息,也可以在互联网上搜索。对于这样的问题,你也应该仔细研究机器代码;)
相关文章:
- 为什么我们不能在C++中初始化类的成员变量
- 如何在公共类方法中初始化公共变量
- 如何在类构造函数中初始化pthread_t变量
- 如何在 c++ 中初始化类中的私有变量?
- 如何初始化类的 char 成员变量?
- 有没有办法取消初始化类 c++ 中的变量
- 如何根据构造函数参数使用超类类型初始化成员变量?
- 如何使用常量变量初始化类的 const 成员变量
- 在C++中初始化类变量浮点数组
- 是否可以使用自动类方法初始化自动变量?
- Qt C++ 初始化类和调用方法,其中包含类中的变量
- 初始化类成员中的变量是一种不好的做法吗?
- 类和CPP核心指南中的初始化优先变量
- 初始化类中的变量
- 通过类构造函数初始化成员变量 STL 向量
- 正在初始化类中的变量
- C++:哪个先被调用/初始化?类构造函数或其成员变量的构造函数
- 初始化类中的私有静态变量
- C++-无法通过构造函数初始化类变量
- 需要以编程方式初始化类变量数组,我怎么做最好