3 c++ string wchar-t wstring c-str
我有这个简单的功能:
const wchar_t *StringManager::GetWCharTStar(int stringId)
{
std::wstring originalString = StringManager::GetString(stringId);
const wchar_t *retStr = originalString.c_str();
return retStr;
}
Run Code Online (Sandbox Code Playgroud)
在该函数的第二行,我有正确的wchar_t*.但是,当我返回时,数据切换到垃圾数据.两者之间没有任何功能.是什么赋予了?!
i_a*_*orf 11
originalString在堆栈上分配..c_str()方法只返回指向wstring对象的某个连续内部内存的指针.当函数返回时,originalString超出范围并被销毁,因此返回的指针值指向已删除的内存.
如果需要这样做,你应该将数据的副本复制到用new或malloc()分配的内存中,然后调用者必须删除/ free()该内存.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |