首先,请原谅我英语不好。
我有一个函数,它生成一个LPCSTR值列表,我想将它们全部添加到list<LPCSTR>或vector<LPCSTR>中,这是我的示例代码:
vector<LPCSTR> output={}; // or list<LPCSTR>
...
for (....)
{
auto anItem = static_cast<LPSTR>(malloc(20));
sprintf_s(anItem, 20, "string format", values...);
output.push_back(anItem);
/* The problem */
} //free(anItem); when i free the allocated memory of anItem then added item to output was being corrupt !如果我释放分配的内存,那么数据就被破坏了,否则我就有一个巨大的未使用内存!如果我在循环之前减速auto anItem = static_cast<LPSTR>(malloc(20));,那么添加到ouput中的所有项都是当前anItem的值!!而且我只有一个值的列表/向量!
请帮帮我!>谢谢
发布于 2015-10-15 10:19:58
如果您有希望放入容器中的指针,则可以选择。
对于您的情况,您可能会发现最容易将LPCSTR复制到std::string中,并将它们放入向量中。
发布于 2015-10-15 10:16:59
首先,不应该在向量中存储指针,因为它要求手动管理分配给指针的内存。向量只管理自己的内存(其中包括指针),但不管理它们指向的内容。
使用vector<string>存储字符串。
https://stackoverflow.com/questions/33145812
复制相似问题