Важное правило: вы должны использовать delete
для всего, что было создано new
, и вы не должны ничего удалять.
wstr.c_str()
возвращает указатель на буфер, которым управляетwstring
объект.Он будет освобожден после уничтожения строки, после чего указатель больше не будет действительным.Использование delete
на этом неправильно.Указатель также будет недействительным, если вы измените строку.
aString()
возвращает указатель на буфер, который был создан с помощью new[]
, поэтому вы должны удалить его, когда закончите с ним (используя delete[]
, чтобы соответствовать new[]
).Это подвержено ошибкам, поэтому лучше использовать классы управления ресурсами (например, string
, wstring
, контейнеры и интеллектуальные указатели), а не передавать необработанные указатели и надеяться, что они обрабатываются правильно.