C++ diff�rence entre d�claration static et dynamic
Bonjour,
Je ne comprends pas pourquoi mon programme n'utilise pas la m�me quantit� de m�moire selon que j'alloue de la m�moire dynamiquement ou statiquement.
Voici mon exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <iostream>
#include <vector>
void with_pointer(int size){
std::vector<int*> v(size);
for(int i = 0; i < size; ++i){
//v[i] = (int*)malloc(sizeof(int));
v[i] = new int();
}
system("PAUSE");
}
void without_pointer(int size){
std::vector<int> v(size);
system("PAUSE");
}
int main(int argc, char* argv[]){
int size = 1000000;
//with_pointer(size);//67 400KB
without_pointer(size);//4 800KB
return 0;
} |
Mon but �tant de voir l'espace m�moire utilis� (avec le gestionnaire des t�ches) sur une allocation de 1 000 000 de int (soit 4Mo). En static, donc la version without_pointer utilise bien une quantit� de m�moire de l'ordre de 4Mo. En dynamique, c'est beaucoup plus! Je comprendrais que la m�moire double car j'utilise un tableau de pointer qui pointent vers des int. Mais l�, le rapport est tr�s diff�rent.
D'o� cela vient-il ?
Merci