c – .c_str()怪异吗?数据变化没有押韵或原因?
发布时间:2020-12-16 10:45:10 所属栏目:百科 来源:网络整理
导读:我有这个简单的功能: const wchar_t *StringManager::GetWCharTStar(int stringId){ std::wstring originalString = StringManager::GetString(stringId); const wchar_t *retStr = originalString.c_str(); return retStr;} 在该函数的第二行,我有正确的wc
我有这个简单的功能:
const wchar_t *StringManager::GetWCharTStar(int stringId) { std::wstring originalString = StringManager::GetString(stringId); const wchar_t *retStr = originalString.c_str(); return retStr; } 在该函数的第二行,我有正确的wchar_t *.但是,当我返回时,数据切换到垃圾数据.两者之间没有任何功能.是什么赋予了?! 解决方法
originalString在堆栈上分配. .c_str()方法只返回指向wstring对象的某个连续内部内存的指针.当函数返回时,originalString超出范围并被销毁,因此返回的指针值指向已删除的内存.
如果需要这样做,你应该将数据的副本复制到用new或malloc()分配的内存中,然后调用者必须删除/ free()该内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |