[問題] 如何進行 struct 之複製?

看板C_and_CPP (C/C++)作者 (藍影)時間16年前 (2010/05/16 00:49), 編輯推噓2(2014)
留言16則, 4人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 我自定義一個struct , 內容大概如下 typedef struct chrom{ BOOL *x1; BOOL *x2; UINT x1_len; UINT x2_len; double fitness; }; 同時程式會進行幾個特殊動作 chrom *parent, *pool, *child; parent = (chrom*)malloc(sizeof(chrom)*parent_cnt); // pool, child 同理 for(UINT i=0; i<parent_cnt; i++){ parent[i].x1 = (bool*)malloc(sizeof(bool)*x1_len); parent[i].x2 = (bool*)malloc(sizeof(bool)*x2_len); } // pool, child 同理 問題1: 若我要將 parent 之所有值都丟到 pool 裡面去 除了使用2個 for loop 一個一個 assign 之外, 是否有更快的方法?? 如欲使用 memcpy 之方式, 請問 size 那裡該如何表示?? 問題2 若設 chrom best; 而 best 只是複製 parent 其中的一個, 試問 memcpy 之方式是否會簡單些?? 謝謝各位的細心回覆, 感激不盡!! -- 我期待 我等待 肩狹骨上的翅膀早些長出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.77.80 ※ 編輯: tropical72 來自: 180.177.77.80 (05/16 00:52)

05/16 00:58, , 1F
應該可以直接用=的方式吧?
05/16 00:58, 1F

05/16 01:00, , 2F
直接用 = copy struct, 印象中預設是直接memory照搬, 如
05/16 01:00, 2F

05/16 01:00, , 3F
sizeof(chrom)
05/16 01:00, 3F

05/16 01:00, , 4F
果bool*的東西要copy內容而不是只要copy出指標, 需要另
05/16 01:00, 4F

05/16 01:01, , 5F
外替pool重新malloc那兩個bool的內容@_@"
05/16 01:01, 5F

05/16 01:02, , 6F
查一下 shallow copy 與 deep copy :)
05/16 01:02, 6F

05/16 01:03, , 7F
嗯, 我想重點的確是V大點出來, pool 裡的 bool* 已有
05/16 01:03, 7F

05/16 01:03, , 8F
先malloc, 但我是要複製parent裡整個bool* 值, 而非
05/16 01:03, 8F

05/16 01:04, , 9F
指標, 所以才想說在pool所有memory malloc好的情況下
05/16 01:04, 9F

05/16 01:04, , 10F
pool = parent 是不是可能有哪些問題..
05/16 01:04, 10F

05/16 01:05, , 11F
pool裡的bool malloc好, 一做shallow copy, 還是指copy
05/16 01:05, 11F

05/16 01:05, , 12F
了兩個bool指標, 還附送一對memory leak....@_@"
05/16 01:05, 12F

05/16 01:06, , 13F
要嘛包裝成func, 要嘛overload相關的 = operator吧:)
05/16 01:06, 13F

05/16 01:08, , 14F
嗯, 謝謝 V 大的指教, 我再實作看看 感激不盡
05/16 01:08, 14F

05/16 19:14, , 15F
很有基因演算法的fu
05/16 19:14, 15F

05/16 22:13, , 16F
被樓上發現了.. 近日在應用 GA 於特殊地方.所以寫碼.
05/16 22:13, 16F
文章代碼(AID): #1Bxj1zU2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Bxj1zU2 (C_and_CPP)