Доброго времени суток.
Предположим у нас есть следующий код:
...
#define N <целое число>
...
wchar_t * function() {
...
wchar_t * wcResult = NULL;
...
wcResult = new wchar_t[N];
...
return wcResult;
}
Далее:
...
wchar_t * wcSomeString = new wchar_t[N];
wcscpy_s(wcSomeString, N, function());
...
delete [] wcSomeString;
Что же получается? Память, которая выделена строке в
function(), так и остаётся "висеть", т.е. Heap Memory Leak?
И ещё. Интересно, что если не копировать возвращаемую функцией строку в новую, а просто создать указатель и присвоить ему адрес возвращаемой из
function() строки, то при попытке удалить такой указатель в конце блока
{}:
1. В Debug режиме в VS2005 возникает Assertion на закрытие приложения: программа пытается очистить уже очищенную нами память.
2. В Release режиме в VS2005 всё в порядке.
У кого какие мысли на эту тему?