#navi(contents-page-name): No such page: メモリ

メモリの内容を指定した値で初期化する・memset

指定したメモリ番地から指定したサイズ分を指定した値で初期化するmemset関数のC言語サンプルソースを以下に記します。

c-top.html is not found or not readable.

関連記事

memsetの書式等

memsetを使用したC言語サンプルコード

以下にmemsetを使用して初期化前、0で初期化後、123で初期化後の実行例を記します。 &ref(): File not found: "memset.c" at page "メモリ/メモリの内容を指定した値で初期化する・memset"; (改行コードLF)

#include <stdio.h>
#include <string.h>

struct INT_MEMBERS {
    int a;
    int b;
    int c;
};

int main(void)
{
    struct INT_MEMBERS int_members;
    printf("int_members.a = %d\n", int_members.a);
    printf("int_members.b = %d\n", int_members.b);
    printf("int_members.c = %d\n", int_members.c);

    printf("memset(&int_members, 0, sizeof(int_members))\n");
    memset(&int_members, 0, sizeof(int_members));
    printf("int_members.a = %d\n", int_members.a);
    printf("int_members.b = %d\n", int_members.b);
    printf("int_members.c = %d\n", int_members.c);

    printf("memset(&int_members, 123, sizeof(int_members))\n");
    memset(&int_members, 123, sizeof(int_members));
    printf("int_members.a = %d\n", int_members.a);
    printf("int_members.b = %d\n", int_members.b);
    printf("int_members.c = %d\n", int_members.c);

    return 0;
}

以下に上記のC言語サンプルコードをコンパイルし実行した時の出力を記します。

$ gcc memset.c -o memset
$ ./memset 
int_members.a = -1216453232
int_members.b = 134514091
int_members.c = -1216614412
memset(&int_members, 0, sizeof(int_members))
int_members.a = 0
int_members.b = 0
int_members.c = 0
memset(&int_members, 123, sizeof(int_members))
int_members.a = 2071690107
int_members.b = 2071690107
int_members.c = 2071690107

初期化した値の0になっていることが確認できます。
しかし、123で初期化した値は期待した123になっていません。
これはバイト単位で123という値がセットされるためです。
使用するときは注意しましょう。

以上、memsetのC言語サンプルコードと実行例でした。

c-btm.html is not found or not readable.

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS