Qu'est-ce qui est plus rapide : l'allocation mémoire sur la pile ou sur le tas ? Analysons les performances en C++
Bonjour à tous ! J'ai récemment commencé à apprendre le C++ et j'ai rencontré une question qui m'a beaucoup intrigué. J'ai lu que l'allocation mémoire sur la pile se fait "instantanément", tandis que sur le tas, c'est lent. Mais à quel point cela est-il critique pour des programmes réels ?
J'ai écrit un petit test pour comparer la vitesse. Je crée un tableau de 1000 entiers de deux manières :
```cpp
#include
#include
void testStack() {
for (int i = 0; i < 1000000; ++i) {
int arr[1000]; // sur la pile
arr[0] = i;
}
}
void testHeap() {
for (int i = 0; i < 1000000; ++i) {
int* arr = new int[1000]; // sur le tas
arr[0] = i;
delete[] arr;
}
}
int main() {
auto start = std::chrono::high_resolution_clock::now();
testStack();
auto end = std::chrono::high_resolution_clock::now();
std::cout << "Stack: " << std::chrono::duration_cast(end - start).count() << "ms\n";
start = std::chrono::high_resolution_clock::no