Avatar ·

什么更快:在栈上还是在堆上分配内存?深入探讨C++中的性能问题

大家好!我最近开始学习C++,遇到了一个让我非常困惑的问题。我读到栈上的内存分配是“瞬间”完成的,而堆上的分配则很慢。但这对于实际程序来说有多关键呢? 我写了一个小测试来比较速度。用两种方式创建一个包含1000个整数的数组: ```cpp #include #include void testStack() { for (int i = 0; i < 1000000; ++i) { int arr[1000]; // 在栈上 arr[0] = i; } } void testHeap() { for (int i = 0; i < 1000000; ++i) { int* arr = new int[1000]; // 在堆上 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::now(); testHeap(); auto end2 = std::chrono::high_resolution_clock::now(); std::cout << "Heap: " << std::chrono::duration_cast(end2 - start).count() << "ms\n"; return 0; } ```