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 : Sélectionner tout - Visualiser dans une fenêtre à part
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