Bag*_*uss 2 c++ c++builder c++builder-xe
如果我有以下代码:
{
UnicodeString sFish = L"FISH";
char *szFish = AnsiString(sFish).c_str();
CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)
那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?
它的范围只是一行,还是整个块?
szFish在调用之前是无效的CallFunc(),因为AnsiString是一个临时对象,它立即被销毁并szFish指向刚刚被删除的内部缓冲区.
确保AnsiString实例对于调用有效CallFunc().例如:
CallFunc(AnsiString(sFish).c_str());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |