Problèmes de mémoires avec CodeWarrior
Exemples et résolution
Modification taille de l'application |
Sous Metrowerks Codewarrior 2.0
Avec Metrowerks, on ne peut habituellement pas avoir des données locales plus grande que 32k ou 68k. Pour résoudre ce problème il faut modifier la mémoire allouée à votre application. Il y a plusieurs choix, l'un statique et l'autre dynamique.
Statiquement on peut augmenter la taille de la pile (STACK) ainsi que celle du tas (HEAP). Ou encore en C déclarer le tableau comme une variable static (et donc interne à une fonction !!!).
Dynamiquement en Pascal on utilisera les pointeurs, avec une structure et des new(); en C on utilisera par exemple malloc() (dans stdlib.h). Le meilleur choix pour le portage multi-plateforme est l'allocation dynamique. Il faut noter qu'en C, l'allocation dynamique permet d'allouer dans le tas (HEAP) et pas dans la pile (STACK), ce qui permet de bénéficier de plus de mémoire.
Une autre solution moins portable (et donc moins conseillée) est de modifier les préférences de compilation (68K Compiler settings) de manière à tourner ON : (dans ce cas il faudra aussi souvent augmenter le tas, mais pas la pile car pas de paramétrage de la stack sous 68K Compiler settings).
On peut alors après compilation vérifier avec Pomme-I sur l'icone de votre application:
Allocation dynamique |
Utilisation de Malloc (attention cette fonction est déclarer dans le hearder <stdlib.h>:
philippe Rolland-20/03/98