Прежде всего, извините за мой плохой английский.
У меня есть функция, которая генерирует список значений 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
!!
И у меня есть список / вектор только одного значения !!!
пожалуйста, помогите мне!>
Спасибо
Если у вас есть указатели, которые вы хотите поместить в контейнер, у вас есть выбор.
В вашем случае вам может быть проще скопировать LPCSTR в std :: string и поместить их в вектор.
Для начала вам не следует хранить указатели внутри вектора, поскольку для этого необходимо вручную управлять памятью, выделенной указателям. Вектор будет управлять только своей собственной памятью (которая включает в себя указатели), но не на что они указывают.
использование vector<string>
хранить строки.