[問題] free 與 pointer 的問題

看板C_and_CPP作者 (wei)時間14年前 (2011/01/18 17:18), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 各位大大好: 想請教各位大大free的用法 我的code: int *addLines; addLines = realloc(addLines, (pointCount)*sizeof(int)); *(addLines + (pointCount-1)) = currentPoint; 請問大大free的時候 1.只要寫free(addLines);就好了嗎? 2.addLines指在被realloc記憶體的區塊哪一個位址都可以被free嗎? 不知道大大們看不看得懂我的問題@@? 或是我觀念有錯 請大大們指點了 謝謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.140.240

01/19 01:21, , 1F
都可以用 free 釋放掉, 不過你 realloc 那行就炸了,
01/19 01:21, 1F

01/19 01:21, , 2F
新配置一塊的話 addLines 要先初始化 NULL
01/19 01:21, 2F

01/19 01:27, , 3F
我是想要把那些point都放到記憶體裡面存放,
01/19 01:27, 3F

01/19 01:30, , 4F
realloc出來的不一定是原本的 所以原本的要存起來
01/19 01:30, 4F

01/19 01:31, , 5F
如果新的不一樣 原本的要free掉
01/19 01:31, 5F

01/19 01:31, , 6F
如果一樣 當然就不能free
01/19 01:31, 6F

01/19 01:33, , 7F
所以沒辦法知道realloc出來的是不是原本的記憶體
01/19 01:33, 7F

01/19 01:35, , 8F
不是吧, 如果 realloc 出來的位址有動過, 原本的會自動
01/19 01:35, 8F

01/19 01:35, , 9F
不用擔心樓樓上說的問題, 只管接就對了, 不一樣的話他
01/19 01:35, 9F

01/19 01:36, , 10F
free 掉. 至少文件上是這麼寫的
01/19 01:36, 10F

01/19 01:36, , 11F
會幫你把值都複製過去, 舊的那塊刪掉
01/19 01:36, 11F

01/19 01:43, , 12F
咦 我誤解了freebsd manpage的意思...
01/19 01:43, 12F
文章代碼(AID): #1DDSjmDV (C_and_CPP)
文章代碼(AID): #1DDSjmDV (C_and_CPP)