-1 c++ gcc pointers reference dereference
可能重复:
可以在其范围之外访问局部变量的内存吗?
请考虑以下简单的C++代码:
#include <iostream>
struct Test
{
Test( int i )
: ref( i ),
ptr( &i ) {}
int &ref;
int *ptr;
};
int main()
{
Test t( 5 );
std::cout << t.ref << std::endl;
std::cout << *t.ptr << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Test类存储指针和对生活在堆栈上的局部变量的引用.我会假设从Test构造函数返回后我被破坏了.但显然事实并非如此.因为这是程序的输出:
5
134513968
Run Code Online (Sandbox Code Playgroud)
访问指针的结果是我所期望的:随机值随每次运行而变化.但是引用访问总是导致5 - 只是局部变量i仍然存在.
任何人都可以向我解释这种行为吗?我在64位Linux(版本4.6.3)上使用g ++.
此致,enuhtac
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |