Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
|
highlevel:c:effective [2008/09/15 09:22] alfred creado |
highlevel:c:effective [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 13: | Línea 13: | ||
| Remarcar también que incluir ''iostream'' es distinto a incluir ''iostream.h'', esta segunda contiene las funciones como globales en vez de estar dentro de los namespaces, llevando a poder provocar algún error de nombres. | Remarcar también que incluir ''iostream'' es distinto a incluir ''iostream.h'', esta segunda contiene las funciones como globales en vez de estar dentro de los namespaces, llevando a poder provocar algún error de nombres. | ||
| - | ==== Utilizar new y delete ==== | + | |
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Gestión de memoria ==== | ||
| El preferible utilizar los ''new'' y ''delete'' en vez del ''malloc'' y el ''free''. \\ | El preferible utilizar los ''new'' y ''delete'' en vez del ''malloc'' y el ''free''. \\ | ||
| Es importante entender que al hacer un array debe llamarse al ''delete'' como ''delete []''. | Es importante entender que al hacer un array debe llamarse al ''delete'' como ''delete []''. | ||
| Línea 22: | Línea 27: | ||
| </code> | </code> | ||
| Cuando creamos un puntero nulo lo inicializaremos como 0, no como ''NULL''. \\ | Cuando creamos un puntero nulo lo inicializaremos como 0, no como ''NULL''. \\ | ||
| - | Llamaremos a los delete a los punteros miembros de una clase dentro del destructor de esta. | + | Llamaremos a los delete a los punteros miembros de una clase dentro del destructor de esta. \\ \\ |
| + | |||
| + | Debemos estar preparados por si el sistema se quedase sin memoria, para ello existe una función llamada ''set_new_handler'' que recibe por parámetro la función que se llamará si esto ocurriese: | ||
| + | <code cpp> | ||
| + | void noMoreMemory() { | ||
| + | cerr << "Unable to satisfy request for memory\n"; | ||
| + | abort(); | ||
| + | } | ||
| + | |||
| + | int main() { | ||
| + | set_new_handler(noMoreMemory); | ||
| + | for (long i=0; i<100000000; i++) | ||
| + | new long[100000000]; | ||
| + | } | ||
| + | </code> | ||
| ===== More Effective C++ ====== | ===== More Effective C++ ====== | ||