Estoy un poco confundido sobre si preferiría inicializar mis widgets principales en la pila o en el montón. En "Programación de la GUI de C++ con QT 4," los widgets principales se inicializan en la pila. Antes de decir más, voy a explicar lo que quiero decir:QT - Widget principal - ¿Pila o pila?
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
Ahora, tal vez esto es simplemente porque es más seguro, tal vez es porque no quieren confundir a los lectores acerca de la asignación de memoria en QT. Al omitir cualquier eliminación en los objetos que se heredan de QObject, los lectores pueden "olvidar" la gestión de memoria con objetos QT. Sin embargo, mi pregunta es, ¿hay que prefieren ese método, o el siguiente:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow* mainWin = new MainWindow;
mainWin->show();
int execReturn = app.exec();
delete mainWin;
return execReturn;
}
La razón principal por la que trae esta pregunta es que normalmente prefiero seguir un patrón con la elección del montón vs pila:
- Si el artículo es grande - Montón
- Si el artículo es a largo plazo - Montón
- De lo contrario - Pila
Ahora, supongo que mi pregunta se reduce a dos preguntas:
- Es QWidget grande hasta el punto en que debería temer apilar-desbordamientos?
- ¿Qué tan grande es la pila para la aplicación promedio? ¿Cuándo debería temer desbordar la pila (aparte de las funciones obviamente recursivas)?
Me doy cuenta de que es poco probable que QWidget cause un desbordamiento de la pila, pero, por supuesto, estará encima de cualquier otro uso de pila que pueda tener mi aplicación.
Usa 'sizeof' para ver qué tan grande es el objeto. No existe una "pila promedio", varía ampliamente entre aplicaciones, y los límites varían ampliamente según la plataforma. Si está preocupado, y dado que este es fácil de seguir y no hay absolutamente ningún aspecto de rendimiento, simplemente use el montón. – Mat
Dices que varió según la aplicación, supongo que te refieres a la pila utilizada, pero ¿qué hay de disponible? ¿Qué tal, en lugar de buscar un promedio por aplicación, cuál es el tamaño de pila mínimo para una aplicación de Windows, Linux o Mac en los últimos 15 años? Básicamente, si estoy creando una aplicación multiplataforma, tengo curiosidad por saber qué límites debo esperar. --- sizeof muestra 20, es esto exacto, parece un poco pequeño. – Serodis
Ugh @ "stack"/"heap" –