스택이나 힙에서 기본 위젯을 초기화해야하는지 여부에 대해서는 다소 혼란 스럽습니다. "C++ GUI Programming with QT 4"에서는 메인 위젯이 스택에서 초기화됩니다. 내가 더 말할 전에, 나는 무슨 뜻인지 설명 할 것입니다 :QT - 주요 위젯 - 스택 또는 힙?
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
자, 아마도이는 안전 때문에 그들이 QT에서 메모리 할당에 대한 독자를 혼동하지 않기 때문에, 아마도 그것은 단순히이다. QObject에서 상속받은 객체에 대한 삭제를 남기면 독자는 QT 객체로 메모리 관리를 "잊어 버릴"수 있습니다. 그러나, 내 문제는 우리가 그 방법을 선호하거나 다음해야한다 :
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow* mainWin = new MainWindow;
mainWin->show();
int execReturn = app.exec();
delete mainWin;
return execReturn;
}
내가 일반적으로 스택 대 힙을 선택하여 패턴을 따라하는 것을 선호한다이 질문을 가지고 주된 이유 :
- 힙 그렇지 않으면
- - -
- 항목이 장기 인 경우 힙 - 항목이 큰 경우 스택
지금, 내 질문은 두 가지 질문으로 귀결 같아요
- 는 QWidget 내가 스택 오버 플로우 두려워해야 할 점에 큰가요?
- 평균 응용 프로그램의 스택 크기는 어느 정도입니까? 언제 스택 오버플로에 대해 두려워해야합니까 (분명히 재귀 함수 제외)?
QWidget 자체가 스택 오버플로를 일으킬 가능성은 거의 없다는 것을 알고 있지만, 물론 이것은 내 응용 프로그램에있을 수있는 다른 스택 사용량 위에있을 것입니다.
개체의 크기를 보려면'sizeof'를 사용하십시오. "평균 스택 (average stack)"은 없으며 응용 프로그램마다 매우 다양하며 플랫폼에 따라 그 한계가 다양합니다. 걱정할 필요가 없으며, 추적하기 쉽고 성능 측면이 전혀 없으므로 힙을 사용하십시오. – Mat
응용 프로그램에 따라 다양하다고 말하면 스택 사용을 의미한다고 가정하지만 사용 가능한 것은 무엇입니까? 응용 프로그램 당 평균을 찾는 대신, 지난 15 년 동안 Windows, Linux 또는 Mac 응용 프로그램의 최소 스택 크기는 얼마입니까? 기본적으로, 크로스 플랫폼 애플리케이션을 만드는 경우 어떤 제한이 필요한지 궁금합니다. --- sizeof는 20을 보여줍니다, 이것은 조금 정확 해 보입니다. – Serodis
@ "stack"/ "heap" –