加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()该内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读