gpt4 book ai didi

c++ - std::wstring 导致堆内存分配崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:41 24 4
gpt4 key购买 nike

我在 std::wstring 内存分配方面遇到了一个大问题。当我尝试使用此代码时程序崩溃:

size_t size;
mbstowcs_s(&size, NULL, 0, buffer, _TRUNCATE);
wchar_t *buffer2 = (wchar_t*)malloc(size + 1);
mbstowcs_s(&size, buffer, buffer_size, buffer, _TRUNCATE);
buffer2[size] = '\0';

std::wstring data(buffer);

崩溃发生在最后一行,如果我使用以下行则不会发生:

std::wstring data(L"hello");

错误是内存堆分配失败,结果导致程序崩溃。为什么?怎么了?

最佳答案

wchar_t *buffer2 = (wchar_t*)malloc((size + 1) * sizeof(wchar_t));
^^^^^^^^^^^^^^^^^

malloc 分配一定数量的字节 - 你不需要一定数量的 wchar_t

如果您使用的是 C++,正确的方法是:

wchar_t *buffer2 = new wchar_t[size+1];

关于c++ - std::wstring 导致堆内存分配崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com