Поскольку у меня больше опыта работы с Java, и я сейчас погружаюсь в мир C++, есть что-то, что я знаю на Java, что я не уверен, что он работает, как на C++.C++ Блок-код сохраняет память до завершения функции?
На самом деле я получил этот псевдо C++ код:
unsigned long __stdcall MyFunction()
{
//Do some code that will take a while to complete...
{
MY_BIG_STRUCT mbStruct = {};
mbStruct.a = "a";
[...];
UseMyStructData(&mbStruct);
}
//Do some code that will take a while to complete...
return EXIT_SUCCESS;
}
Так что мой вопрос: На JAVA с помощью этих блоков кода внутри скобок {}
маркируют как «свободный» эти переменные GC освободить их, даже если функция не закончил его выполнение. Итак, на C++ это работает одинаково? Или бесполезно использовать {}
, если у меня нет инструкции блока (например, если, в то время как, переключатель и т. Д.)?
С уважением,
Afonso Lage.
Как можно работать «так же» - C++ имеет совершенно другую модель объекта и памяти от Java. Этот вопрос даже не имеет смысла. –
@Walter Почему? У меня есть рабочая функция обратного вызова, которая использует ее на VS2012 ... –
@Walter - __stdcall - это особенность Windows. Он определяет, очищает ли вызываемая или вызывающая функция стек. – edtheprogrammerguy