标准和C++书说,类类型成员的默认构造函数由隐式生成的默认构造函数调用,但内置类型未初始化。但是,在这个测试程序中,在堆中分配对象或使用临时对象时,我得到了意想不到的结果:#includestructContainer{intn;};intmain(){Containerc;std::coutn我得到这个输出:[STACK]Num:-1079504552[HEAP]Num:0[TEMP]Num:0这是编译器特有的行为吗?我真的不打算依赖这个,但我很想知道为什么会发生这种情况,特别是对于第三种情况。 最佳答案 这是预期的行为。有两个概
我有一个这样的数组声明:inta[];这里的a是一个原始int类型的数组。这个数组存储在哪里?它是存储在堆上还是栈上?这是一个原始类型int,所有原始类型都不存储在堆上。 最佳答案 正如gurukulki所说,它存储在堆上。但是,您的帖子暗示了一个误解,可能是由于一些善意的人传播了“原始人总是生活在堆栈上”的神话。这是不真实的。局部变量在栈上有它们的值,但并不是所有的原始变量都是局部的……例如,考虑一下:publicclassFoo{intvalue;}...publicvoidsomeOtherMethod(){Foof=newF
我有一个这样的数组声明:inta[];这里的a是一个原始int类型的数组。这个数组存储在哪里?它是存储在堆上还是栈上?这是一个原始类型int,所有原始类型都不存储在堆上。 最佳答案 正如gurukulki所说,它存储在堆上。但是,您的帖子暗示了一个误解,可能是由于一些善意的人传播了“原始人总是生活在堆栈上”的神话。这是不真实的。局部变量在栈上有它们的值,但并不是所有的原始变量都是局部的……例如,考虑一下:publicclassFoo{intvalue;}...publicvoidsomeOtherMethod(){Foof=newF