1. 程式人生 > >記憶體中的分割槽以及堆區和棧區的區別

記憶體中的分割槽以及堆區和棧區的區別

而bbbbbbbbbbb是在編譯時就確定的;
但是,在以後的存取中,在棧上的陣列比指標所指向的字串(例如堆)快。
比如:
#include
void main()
{
char a = 1 
char c[] = " 1234567890" 
char p =" 1234567890" 
a = c[1] 
a = p[1] 
return 
}
對應的彙編程式碼
10: a = c[1] 
00401067 8a 4d f1 mov cl byte ptr [ebp-0fh]
0040106a 88 4d fc mov byte ptr [ebp-4] cl
11: a = p[1] 
0040106d 8b 55 ec mov edx dword ptr [ebp-14h]

00401070 8a 42 01 mov al byte ptr [edx+1]
00401073 88 45 fc mov byte ptr [ebp-4] al
第一種在讀取時直接就把字串中的元素讀到暫存器cl中,而第二種則要先把指標值讀到edx中,在根據edx讀取字元,顯然慢了。