2015-11-04 104 views
0

因此,舉例來說,如果我有它使用的程序:存儲在變量棧中的變量在哪裏?

example = a.top 

在哪裏存儲變量example? 以及從堆棧中彈出的值存儲在哪裏?

附加:

如果我有一個基本的程序,而不只是增加了一些價值在一起像(變量將等於用戶輸入)功能:

a=8 
b=2 
c=5 
d=2 
answer = a+b+c+d 

將在變量a,b, c,d,答案是否存儲在堆棧或其他區域?

+0

他們存儲在堆棧的當前層中。你真的在問什麼? – ergonaut

+0

我以爲堆棧空間有限?當然,並不是程序中的每個變量都在堆棧中?變量在哪裏出現一次? – Peter

回答

0

這個問題很難回答,因爲它很大程度上取決於您使用的語言。

實際上,在C/C++/Pascal或傳統的命令式語言中,人們會告訴你它們在棧中或堆上。

當你考慮到CPU的一些優化可能會使它們存儲在寄存器中(即使你問了一個局部變量)甚至是......無處不在:編譯器只是刪除變量,如果是無用。

還有一個可能性是當你有內存映射數據(mmap()的調用),你有可能是在內核空間(直接一些內核頁)數據或文件(存儲在磁盤上)

當使用解釋型語言(python/perl/bash),它們由解釋器本身處理,可能在堆上。

隨着函數式語言,事情變得更難,因爲這樣的概念(堆棧)有一個非常不同的意義,可以說一切都在堆棧中(其中有一點做與你可以想象C棧)