C言語のポインタって中々曲者ですね(何を今更
ちゅーわけで自分用メモ。
下記のようなデータ構造の場合のデータコピー
■■■□□□□ = alldata
↑dat1↑dat2
alldata →data1とdata2へ…
みたいなことをしたいときは・・・。
typedef struct dataone {
int ndata_num;
int ndata_num2;
}DATA_O;
typedef struct datatwo {
char szbuffer[1024];
int nid;
}DATA_T;
#define MAX_O 20
#define MAX_T 128
DATA_O data1[MAX_O];
DATA_T data2[MAX_T];
int md1 = sizeof(DATA_O) * MAX_O;
int md2 = sizeof(DATA_T) * MAX_T;
BYTE *buf = new BYTE[md1 + md2];
//データをbufにコピー
memcpy(buf, &data1, md1);
memcpy(buf + md1, &data2, md2);
//dataをクリア
memset(data1, 0, md1);
memset(data2, 0, md2);
memcpy(&data1, buf, md1);
memcpy(&data2, buf + md1, md2);
delete[] buf;
これでちゃんと動くはず・・・。
確認はしてませんが(爆死
スポンサーサイト