[英]Qt C++ class variable uninitialized
操作系统 -> ubuntu 15.10 x64 IDE -> qt creator cxx -> clang x64
未初始化的变量“ abcdefgh ”,但在运行“ beg ”时,值始终为零; 为什么 ?
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%08X\n", a, b, c, d);
printf("value show e = 0x%08X , f = 0x%08X , g = 0x%08X , h = 0x%08X\n", e, f, g, h);
printf("mapid show e = 0x%08X , f = 0x%08X , g = 0x%08X , h = 0x%08X\n", &e, &f, &g, &h);
}
private:
int a;
int b;
int c;
int d;
};
int main()
{
A aaa;
aaa.show();
int a;
printf("0x%08x\n", a);
while(1);
return 0;
}
您正在使用未初始化的变量。 您在变量中找到的“随机垃圾”取决于堆栈中的数据。 并且堆栈上的数据或多或少是随机的。
你会发现一些变量为零,因为堆栈在那个地方为零。 堆栈为零的原因可能是随机的,也可能取决于您的程序。
每个函数调用都会操作堆栈,因此可能会发生一些零是之前调用的某些函数的“剩余部分”。 如果您认为您的程序之前没有调用任何函数,则最好检查机器代码。 有很多事情发生,你没想到......
您可以在此处阅读有关堆和堆栈的更多信息,或者只是在 Internet 上搜索。 对于这样的问题,您也应该真正研究一下机器代码;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.