[問題] Realloc 後記憶體位置的問題
請問 realloc 之後,之前已存資料的記憶體位置改變是正常的嗎?
我寫了個簡單的測試程式如下,在 Linux 和 windows 上跑的結果不一樣,
int main(){
int i;
int * p = calloc(10, sizeof(int));
for(i=0;i<10;i++)
p[i]=i;
int * p2 = realloc(pm, sizeof(int) * 20)
.....
p2[0] = -1;
.....
}
在 Linux 上,p 和 p2 指的記憶體空間一樣 ( p2[0] = p[0] = -1 )
而在 windows 上就不一樣,怎麼會這樣呢? ( p[0] = 0 ; p2[0] = -1 )
那在 windows 上的 p 所指的空間要另外 free 嗎?
還是 realloc 的時候程式就會自己釋放記憶體該空間?
====================================================================
我主要之目的是在 main() 裡宣告一 memory pool,
給我要實作的資料結構用,這些接構本身都是用數個指標串在一起,
當 input 的量太大時,再用 realloc 增加空間,
但是若前面已經有資料的記憶體位置更動,那我整個結構就 ... 毀掉了 ...
(目前就是有這樣的問題存在 ... )
而我這隻程式又主要在 windows 上跑,請問大大們建議用什麼方法解決呢?
還是說 memory pool 不是這樣用的? 我對此概念有所誤解呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.18.7
→
07/14 23:54, , 1F
07/14 23:54, 1F
→
07/14 23:55, , 2F
07/14 23:55, 2F
→
07/14 23:56, , 3F
07/14 23:56, 3F
→
07/14 23:56, , 4F
07/14 23:56, 4F
→
07/14 23:58, , 5F
07/14 23:58, 5F
→
07/14 23:59, , 6F
07/14 23:59, 6F
→
07/15 00:00, , 7F
07/15 00:00, 7F
推
07/15 00:03, , 8F
07/15 00:03, 8F
→
07/15 00:03, , 9F
07/15 00:03, 9F
推
07/15 00:05, , 10F
07/15 00:05, 10F
→
07/15 00:06, , 11F
07/15 00:06, 11F
→
07/15 00:08, , 12F
07/15 00:08, 12F
推
07/15 00:09, , 13F
07/15 00:09, 13F
→
07/15 00:09, , 14F
07/15 00:09, 14F
→
07/15 00:10, , 15F
07/15 00:10, 15F
→
07/15 00:10, , 16F
07/15 00:10, 16F
→
07/15 00:11, , 17F
07/15 00:11, 17F
→
07/15 00:12, , 18F
07/15 00:12, 18F
→
07/15 00:13, , 19F
07/15 00:13, 19F
→
07/15 00:15, , 20F
07/15 00:15, 20F
→
07/15 00:15, , 21F
07/15 00:15, 21F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章