读书人

内存相关 一个奇怪的有关问题

发布时间: 2012-10-19 16:53:36 作者: rapoo

内存相关 一个奇怪的问题

C/C++ code
class A{int n;char c;};int main(){[code=C/C++]
A a;
//memset(&a,sizeof(a),0);
a.n=1;
a.c=12;
char* c=(char*)&a;
int n=0;
for(int i=0;i<sizeof(a);i++)
{
n+=*c;
}
cout<<n<<endl;
cin>>n;
main();
return 0;
}
[/code]
我的预期是,每次输出的n都是一样的。但结果却不是。
很奇怪,求解决。

[解决办法]
内存对齐,结构a有3个填充字节,由于这3个字节未赋值,因此结果随机
另外最好不要调用main,标准里面是不允许这样调用的,不过目前的主流编译器似乎都支持这样调用
[解决办法]
a的内存你每次都是随机分配的结果当然不同了
[解决办法]
探讨

#1楼 #2楼的同学
什么时候 main不可以被调用了 ???
一般没必要这样做就是了 c/c++的main函数 随意调用的

[解决办法]
探讨
内存对齐,结构a有3个填充字节,由于这3个字节未赋值,因此结果随机
另外最好不要调用main,标准里面是不允许这样调用的,不过目前的主流编译器似乎都支持这样调用

读书人网 >C++

热点推荐