(2005-09の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2005-09-23 Fri (他の年の同じ日: 2006 2011)

memcpy memset
2005-09-23-2 / カテゴリ: [programming][c] / [permlink]

備忘録
void* memcpy(void *dest, const void *src, size_t count);

src が指してるアドレスから count バイト分を dest へコピーする。
void* memset(void *dest, int c, size_t count);

dest が指してるアドレスから count バイト分を c で埋める。

いつのまにかゴッチャになってて、
memset(p_data, 0, n_datasize);
とすべきところを
memcpy(p_data, 0, n_datasize);
と何箇所も記述していた…
しかも win 上だとエラーになるが、実際に動作させるデバイスではエラーにならんかったので気づかなかった。

メモリのポインタを受け渡しする関数の設計
2005-09-23-1 / カテゴリ: [programming][c] / [permlink]

C言語でポインタを引数に関数を呼び出し、関数での処理結果をそのポインタにセットしてもらうような場合(特に文字列)、

(1) 呼び出し元で初期化して(\0詰等)関数をよびだす
(2) 関数内で初期化して(\0詰め等)処理する



(1) 呼び出し時に有効なメモリのサイズも渡す
(2) サイズは固定で関数内で注意する

あたりに気をつける。
というか、共通の設計思想でコーディングする。

汎用的という点では、前者は (1) 後者も (1)
memcpy やら strncpy なんかのように。

と、今日教わった。
今の会社じゃ誰も教えてくれないこと…
前の日 / 次の日 / 最新 / 2005-09

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12