我定义对象的函数中:C++函数中定义的对象在超出作用域后会被销毁吗?
SoundFXSystem* Engine::GetSystem(){
SoundFXSystem system; // var defined inside a function
sEngine->GetSystem(&system);
return &system; // can I return the address of the var?
}
是合法的返回变种的地址,并在后面的程序中使用它?当函数退出并且不能被调用者使用时,它会立即超出范围吗?
编辑:如果我如下定义对象,它会被动态分配吗?
SoundFXSystem* Engine::GetSystem(){
SoundFXSystem* system = new SoundFXSystem(); // var defined inside a function
sEngine->GetSystem(&system);
return system;
}
永远不会返回一个非静态局部变量的地址。它是**未定义的行为**,以解除引用所述地址一个它所在的范围。 – WhozCraig 2013-03-23 12:31:10
[通过指针从C和C++函数返回本地数据](http:// stackoverflow。com/questions/3127507/returns-local-data-from-functions-in -c-and-c-via-pointer) – 2013-03-23 13:16:54
**每个**对象在超出范围时都会被销毁。 – 2013-03-23 15:54:42