У меня есть глобальная переменная с именем wszBuffer
I HeapAlloc
в функции (someFunc()
) и HeapFree
в другой функции (anotherFunc()
)
В основном я вызываюфункции, но когда я смотрю на переменную после вызова anotherFunc()
, в ней есть какой-то мусор и некоторые значения моей другой переменной HeapAllocated
Примерно так:
![enter image description here](https://i.stack.imgur.com/nUDgz.png)
Но если я позвоню anotherFunc_with_return()
вместо вызова anotherFunc()
, то все в порядке
Но я не хочу иметь возвращаемое значение в функции
Есть предложения?
Пример кода:
// Global
LPWSTR wszBuffer;
VOID someFunc()
{
DWORD dwSize = 0;
// doing somthing and calculate dwSize...
wszBuffer = (LPWSTR) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
// continue...
}
VOID anotherFunc()
{
// do somthing with wszBuffer and then free it
if (wszBuffer != NULL)
{
HeapFree(GetProcessHeap(), NULL, wszBuffer);
wszBuffer = NULL;
}
}
LPWSTR anotherFunc_with_return()
{
// do somthing with wszBuffer and then free it
if (wszBuffer != NULL)
{
HeapFree(GetProcessHeap(), NULL, wszBuffer);
wszBuffer = NULL;
}
return wszBuffer;
}
int main()
{
someFunc();
anotherFunc(); // It's not good
// It's OK
wszBuffer = anotherFunc_with_return();
return 0;
}