Re: [問題] 要抓出存放Array Size的記憶體位置
※ 引述《jerrypotato (我是湯姆貓 不是傑利薯)》之銘言:
: 現在課堂上正在複習C++語法
: 順便介紹變數宣告時 電腦是如何實際的指派記憶體位置給那些被宣告的變數
: 其中有一題是這樣的:(只列出關鍵部份)
: class A
: {
: int data;
: }
: int main()
: {
: A *arr = new A[17];
: //Some Commands......
: return 0;
: }
: 根據教授的說法,"17"這一個數字會實際存在於記憶體中,
: 而且其位置位於arr之前的幾個byte,
: 要我們定位出"17"這個數字,所佔據的記憶體位址。
: 我試過好幾個方法,可是最後都是失敗的,
: 最後還用到超級暴力法:
: int *intptr = (int *) &arr //強制取出arr的記憶體位址
: for (int k = 0; k < 50; k++ )
: cout << *(intptr - k) << endl //把arr位址之前的記憶體全部掃瞄過一遍
: 結果還是不能掃到17這個數字 囧
: 實在沒辦法,只好PO上版來請教各位強者,
: 請問我要如何定位出"17"這個數字所佔據的記憶體位址呢?
: 謝謝<(_ _)>
我不太肯定是不是真的有, 但你這裡的做法有一個問題.
你的 loop 每次是往前跳一個 int 的 size.
但那個 "17" 未必是在這些位置
你應該要:
char * bytePtr = (byte*) & arr;
for (int k = sizeof(int); k < 50; k++) { // 往前 scan 50 個 byte
cout << *((int *) bytePtr -k) << endl;
}
這樣才對吧? 這樣才是一個個 byte 往前找
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
→
10/05 21:59, , 1F
10/05 21:59, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章