作者fairyflame (妖精火燄)
看板EE_DSnP
標題[問題] 請問hw1.2的第三題
時間Tue Mar 11 18:14:59 2008
題目中的:
The array size “13” is recorded around “arr’s”
location in the heap memory (hint: some bytes before arr’s address).
是什麼意思呢?
是指 A *arr = new A[13]; 之後
13這個數字會存在heap memory的某一區之中嗎@@"
一直不知道要怎麼取出它的size說...><
我在main底下做了嘗試
int *arr = new int[13];
cout<<*(arr-1)<<endl;
跑出來的並不是13耶@@"
在網路上找了好久new的用法 也沒看到哪裡有提到怎麼取出array size
可以請哪位大大幫忙開示一下嗎<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.235
※ 編輯: fairyflame 來自: 140.112.4.235 (03/11 19:11)
1F:推 ric2k1:像 int 這種 predefined type 系統並沒有將 13 存起來 03/11 22:00
2F:→ ric2k1:應該是因為它有特別的 memory 管理方式. 03/11 22:01
3F:推 ric2k1:靬韟菢q的 class 如 A, 則 13 有存下來. 03/11 22:01
4F:→ ric2k1:你的方向基本上是對的, 03/11 22:02
5F:推 ric2k1:只是要知道怎樣找到前面 4 個 Bytes 03/11 22:03
6F:→ ric2k1:(上面出現亂碼) 自己定義的 class ... 03/11 22:03
7F:推 lendlicewang:請問老師 這題我用arr-1找的數字是錯的 用arr-2才對 03/12 17:42
8F:→ lendlicewang:這樣子是正常的嗎?? 03/12 17:43
9F:推 spock:樓上同學要不要附上作業系統版本與 compiler 版? 03/12 19:08
10F:→ spock:如果你做了五種嘗試都是 arr-2 (假設無其他 bug),該不會是 03/12 19:08
11F:→ spock:compiler dependent... 03/12 19:10
12F:推 lendlicewang:我用的是工作站的版本(cad36) 另外把同樣Code拿到 03/12 21:17
13F:→ lendlicewang:windows的Dev來測試 就變成要用arr-1才找到答案 03/12 21:19
14F:→ lendlicewang:另外工作站的size_t是8bytes Dev的是4bytes 03/12 21:20
15F:推 lendlicewang:cad38又變成arr-1了 size_t為4bytes 03/12 21:33
16F:→ lendlicewang:所以交作業是以arr-1為準嗎? 03/12 21:34
17F:推 ric2k1:就用你可以 work 的版本吧! 這題的確會是 platform & 03/12 22:25
18F:→ ric2k1:compiler dependent. 我會請助教特別留意. 03/12 22:26