看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我自定義一個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)
tabinoyume:應該可以直接用=的方式吧? 05/16 00:58
VictorTom:直接用 = copy struct, 印象中預設是直接memory照搬, 如 05/16 01:00
tabinoyume:sizeof(chrom) 05/16 01:00
VictorTom:果bool*的東西要copy內容而不是只要copy出指標, 需要另 05/16 01:00
VictorTom:外替pool重新malloc那兩個bool的內容@_@" 05/16 01:01
VictorTom:查一下 shallow copy 與 deep copy :) 05/16 01:02
tropical72:嗯, 我想重點的確是V大點出來, pool 裡的 bool* 已有 05/16 01:03
tropical72:先malloc, 但我是要複製parent裡整個bool* 值, 而非 05/16 01:03
tropical72:指標, 所以才想說在pool所有memory malloc好的情況下 05/16 01:04
tropical72:pool = parent 是不是可能有哪些問題.. 05/16 01:04
VictorTom:pool裡的bool malloc好, 一做shallow copy, 還是指copy 05/16 01:05
VictorTom:了兩個bool指標, 還附送一對memory leak....@_@" 05/16 01:05
VictorTom:要嘛包裝成func, 要嘛overload相關的 = operator吧:) 05/16 01:06
tropical72:嗯, 謝謝 V 大的指教, 我再實作看看 感激不盡 05/16 01:08
guest0079:很有基因演算法的fu 05/16 19:14
tropical72:被樓上發現了.. 近日在應用 GA 於特殊地方.所以寫碼. 05/16 22:13