прежде всего извините меня за мой плохой английский.Значение lpcstr было повреждено при нажатии на вектор или список
У меня есть функция, которая генерирует список значений 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
!! И у меня есть список/вектор только одного значения !!!
, пожалуйста, помогите мне!> благодаря
Спасибо, А как насчет других указателей? например struct or .... – Robert
Избегайте сырых указателей, как очень общий совет. В случае LPCSTR используйте вместо него строку. В случае структур использовать структуру как параметр для вектора. Конечно, это требует, чтобы сама структура отслеживала свои собственные ресурсы, поэтому не храните в ней указатели, представляющие право собственности. –