NotUsedPseudo a écrit :
Bonsoir!
Merci à vous trois pour vos réponses !
...Malheureusement, je suis un peu obligé de faire une allocation statique, type tableau[10000000]...puisque c'est une règle du tp
(je la trouve d'ailleurs assez tadada mais elle est ainsi et je dois composer avec).
Sachant ceci, est ce que je peux utiliser la fonction malloc donnée dans l'exemple de Gilou ?
Ou y a t-il un autre moyen de passer outre cette limite de 10Mo sans passer par les vecteurs ?
Encore une fois, merci d'avance pour vos réponses.
|
Les vecteurs, c'est tout aussi dynamique que malloc.
Si vous voulez du vrai statique, c'est toujours possible, en mettant les bonnes options à la compilation pour que la stack ait la taille nécessaire, et ça, ça dépend totalement de votre compilateur et de l'OS. Sous Windows, avec Visual C++, c'est l'option de compilation /F nnn
Mais ça n'a pas grand intérêt, l'allocation dynamique est bien plus pratique à mettre en oeuvre.
Vous n'avez pas le droit d'écrire
int * table = new int[10000000];
pour votre tp?
Parce qu'il m'aurait semblé logique qu'on attende de vous quelque chose de ce genre:
Code :
- #include <iostream>
- #include <new>
- using namespace std;
- int main(int argc, char *argv[]) {
- int *table;
- try {
- table = new int[10000000];
- } catch (bad_alloc xa) {
- cout << "Echec allocation" << endl;
- return 1;
- }
- cout << "Allocation OK" << endl;
- delete [] table;
- cout << "Desallocation" << endl;
- return 0;
- }
|
ou sa variante sans exception
Code :
- #include <iostream>
- #include <new>
- using namespace std;
- int main(int argc, char *argv[]) {
- int *table = new (nothrow) int[10000000];
- if (table == 0) {
- cout << "Echec allocation" << endl;
- return 1;
- }
- cout << "Allocation OK" << endl;
- delete [] table;
- cout << "Desallocation" << endl;
- return 0;
- }
|
qui la encore marche très bien sur une bécane poussive et avec peu de mémoire:
C:\clang>g++ -o table.exe table.cpp
C:\clang>table
Allocation OK
Desallocation |
A+,
Message édité par gilou le 16-10-2012 à 00:28:01
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --