[問題] 記憶體的問題

看板C_and_CPP (C/C++)作者 (s8752199)時間16年前 (2009/06/03 09:58), 編輯推噓4(4021)
留言25則, 5人參與, 最新討論串1/1
static char *b = NULL; void f(char *a) { memcpy(&b, &a, sizeof(char)); free(a); printf("%s", b); } 為什麼free(a)之後, b的值就不見了呢? 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.31.187

06/03 10:31, , 1F
因為b是pointer end
06/03 10:31, 1F

06/03 10:45, , 2F
可以跟我講怎麼解決嗎 謝謝!
06/03 10:45, 2F

06/03 10:55, , 3F
你這段東西的問題超多. 你不如先去看書搞清楚 pointer
06/03 10:55, 3F

06/03 10:56, , 4F
memcpy 的概念? memory allocation 看來也很不清楚
06/03 10:56, 4F

06/03 11:21, , 5F
你的 b 在之前其它地方有 malloc 嗎?
06/03 11:21, 5F

06/03 11:22, , 6F
又, memcpy 那一行你想要的行為是什麼, 因為傳 double ptr
06/03 11:22, 6F

06/03 11:22, , 7F
很可能跟你想要的完全不一樣
06/03 11:22, 7F

06/03 11:22, , 8F
嗯 我現在加上了 b = (char*)malloc(sizeof(char));
06/03 11:22, 8F

06/03 11:23, , 9F
我想把a的東西完全拷貝到b
06/03 11:23, 9F

06/03 11:26, , 10F
如a大所說, 您還是把pointer, memory alloc, array, 還
06/03 11:26, 10F

06/03 11:26, , 11F
有char string的用法再看一下吧; sizeof(char)就只有一
06/03 11:26, 11F

06/03 11:27, , 12F
個char, 放了'\0'也就沒空間了. 如果您要copy的東西就
06/03 11:27, 12F

06/03 11:27, , 13F
真的只有一個char, 那其他用*b = *a就做完了不用memcpy
06/03 11:27, 13F

06/03 11:30, , 14F
嗯 其實我現在是要拷貝一個struct只是打char以為大家
06/03 11:30, 14F

06/03 11:31, , 15F
比較方便看
06/03 11:31, 15F

06/03 11:31, , 16F
結果是錯誤的方法 XD
06/03 11:31, 16F
重新一次好了 謝謝 static tInfo *uInfo = NULL; void show_Info(int n, tInfo *pInfo) { uInfo = (tInfo *)malloc(sizeof(tInfo)*n); memcpy(&uInfo, &pInfo, sizeof(tInfo)*n); free(pInfo); } 這樣用法有誤嗎? 謝謝 ※ 編輯: s8752199 來自: 61.222.31.187 (06/03 11:34)

06/03 11:32, , 17F
如果struct只有普通變數沒有pointer那應該這樣就行了.
06/03 11:32, 17F

06/03 11:33, , 18F
如果struct有pointer, 您要確認您要copy的就只要該位址
06/03 11:33, 18F

06/03 11:33, , 19F
就好, 或者需要把指到的東西完整copy一份....@_@"
06/03 11:33, 19F

06/03 11:34, , 20F
Er~~我說這樣就行了是包含推文a/b都有malloc合適size後.
06/03 11:34, 20F

06/03 11:35, , 21F
剛看了該struct 都是char 跟 int而已
06/03 11:35, 21F

06/03 11:36, , 22F
我剛發現我錯了, 你的memcpy前兩個參數應該不用 &
06/03 11:36, 22F

06/03 11:37, , 23F
memcpy是從某位址copy一段內容到另一個位址去....
06/03 11:37, 23F

06/03 11:37, , 24F
而你的uInfo與pInfo現在就應該是位址了....@_@"
06/03 11:37, 24F

06/03 11:41, , 25F
感恩
06/03 11:41, 25F
文章代碼(AID): #1A9TZYh_ (C_and_CPP)
文章代碼(AID): #1A9TZYh_ (C_and_CPP)