假設我有這樣的代碼: -C++:如何在循環內創建一個對象在棧中工作?
struct myStruct{
int a;
int b;
};
int main(){
for(int i=0; i<5; i++){
myStruct obj;
cout<<"Address of object in memory : "<<&obj<<endl;
}
return 0;
}
,這實際上在棧上創建了5個不同的對象?如果是這樣,爲什麼每次考慮到obj是實際的對象而不是對象的引用時,它會打印出完全相同的內存地址?我在網站上閱讀了一些答案,但我仍然無法完全理解。
它爲每一個重複使用相同的空間,這就是爲什麼你看到相同的地址 –
* Stack *是一個實現細節(編譯器實現)。它不是由C語言標準決定的(甚至沒有定義什麼是堆棧)。因此,每個編譯器供應商都可以自由選擇。 –