|
|
@ -58,7 +58,7 @@ int* foo() {
|
|
|
|
|
|
|
|
|
|
|
|
写入方面:入栈比在堆上分配内存要快,因为入栈时操作系统无需分配新的空间,只需要将新数据放入栈顶即可。相比之下,在堆上分配内存则需要更多的工作,这是因为操作系统必须首先找到一块足够存放数据的内存空间,接着做一些记录为下一次分配做准备。
|
|
|
|
写入方面:入栈比在堆上分配内存要快,因为入栈时操作系统无需分配新的空间,只需要将新数据放入栈顶即可。相比之下,在堆上分配内存则需要更多的工作,这是因为操作系统必须首先找到一块足够存放数据的内存空间,接着做一些记录为下一次分配做准备。
|
|
|
|
|
|
|
|
|
|
|
|
读取方面:得益于CPU高速缓存,使得处理器可以减少对内存的访问,高速缓存和内存的访问速度差异在10倍以上!栈数据往往可以直接存储在CPU高速缓存中,而堆数据只能存储在内存中。访问堆上的数据比访问栈上的数据慢,因为必须先访问堆再通过堆上的指针来访问内存。
|
|
|
|
读取方面:得益于CPU高速缓存,使得处理器可以减少对内存的访问,高速缓存和内存的访问速度差异在10倍以上!栈数据往往可以直接存储在CPU高速缓存中,而堆数据只能存储在内存中。访问堆上的数据比访问栈上的数据慢,因为必须先访问栈再通过栈上的指针来访问内存。
|
|
|
|
|
|
|
|
|
|
|
|
因此,处理器处理和分配在栈上数据会比在堆上的数据更加高效。
|
|
|
|
因此,处理器处理和分配在栈上数据会比在堆上的数据更加高效。
|
|
|
|
|
|
|
|
|
|
|
|