簡體   English   中英

靜態和動態分配內存尋址?

[英]Static and dynamic allocation memory addressing?

我使用靜態和動態分配在C ++中初始化了一個數組。

// dynamic allocation... len is input by user.
int *data = new int [len];
// print memory address
cout<< &data<<endl;
cout<< &data[0]<<endl;
// static allocation...
int *arr1[10];
// print memory address
cout<< &arr1<<endl;
cout<< &arr1[0]<<endl;

我希望&data和&data [0]返回相同的內存地址,因為它們指向數組的第一個元素的位置。 但是,我獲得了以下結果:

0x7fffb9f3dd40

0x24c6010

0x7fffb9f3dcf0

0x7fffb9f3dcf0

這似乎按預期對arr1起作用。 請能有人解釋一下嗎? 我想念什么?

dataarr1非常不同: data是一個指向int數組的指針, arr1是一個int*數組。 因此, &data是指向數組的指針的地址,而不是數組的第一個元素的地址。

這行代碼

cout<< &data<<endl;

打印指針變量的地址,而不是通過new獲得的內容。

&data返回data變量本身的地址。 &data[0]返回第一個元素data指向的地址。

數據指向堆上的地址,而&data指向數據,並且位於堆棧上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM