То, что у вас есть сейчас, это единственный указатель на указатели на широкий символ.Затем вы инициализируете это адресом массива из 5 динамически распределенных указателей на широкие символы.Это нормально, но не выделяет место для самих строк, только для указателей на 5 строк.Затем вам нужно выделить место для самих строк:
for (int i=0; i<5; i++) {
array[i] = new char[13];
swprintf(array[i], L"somestring_%d", i);
}
Да, вам следует удалить выделенное пространство после того, как вы его используете.Это будет выглядеть примерно так:
for (int i=0; i<5; i++)
delete [] array[i];
delete [] array;
OTOH, вы, вероятно, не должны ничего делать, а вместо этого использовать что-то вроде:
std::vector<std::wstring> array;
for (int i=0; i<5; i++) {
std::wostringstream temp;
temp << L"somestring_" << i;
array.push_back(temp.str());
}
В этом случае вы можете получить«LPWSTR» с использованием array[i].str()
.Вам вообще не нужно выделять или освобождать какую-либо память явно.