ZeroMemoryが使えない?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
山口

ZeroMemoryが使えない?

#1

投稿記事 by 山口 » 15年前

DXライブラリでプログラミングしております。
ただ構造体で作ったものを初期化しようと思っているのですが
初期化されません・

// メッセージ用
typedef struct{
int MessCnt; // 表示速度
int StrNum; // 文字の切り取り位置
}MESSAGE;
MESSAGE Mess;

Mess.Str = 2;

//Mess.StrNum = 0;
ZeroMemory( &Mess, sizeof(&Mess) );

この後Mess.strを表示すると2が入っております。

//Mess.StrNum = 0;
のコメントを外さないとStrNumが0になりません。
使い方が間違えているのでしょうか?

たかぎ

Re:ZeroMemoryが使えない?

#2

投稿記事 by たかぎ » 15年前

> Mess.Str = 2;
> この後Mess.strを表示すると2が入っております。

Strおよびstrとは?
DXライブラリとのことですが、C++ではなく別の言語にバインディングしているのでしょうか?

山口

Re:ZeroMemoryが使えない?

#3

投稿記事 by 山口 » 15年前

すみません。
Mess.StrNumのことです。

DXライブラリというよりはC言語の予約語でしたね。
使い方が違うのでしょうか。

たかぎ

Re:ZeroMemoryが使えない?

#4

投稿記事 by たかぎ » 15年前

> DXライブラリというよりはC言語の予約語でしたね。

意味がわかりません。

> Mess.StrNumのことです。

だとすると...

> ZeroMemory( &Mess, sizeof(&Mess) );

↑上の部分が間違っています。
sizeof(&Mess)ですので、ポインタのサイズ分しかゼロクリアされません。
この部分も転記ミスがなければの話ですが...

山口

Re:ZeroMemoryが使えない?

#5

投稿記事 by 山口 » 15年前

下記で出来たのですがあっているのでしょうか?
ZeroMemory( &Mess, sizeof(MESSAGE) );

たかぎ

Re:ZeroMemoryが使えない?

#6

投稿記事 by たかぎ » 15年前

> あっているのでしょうか?

あっているかどうかを判断するには、何をやりたいのかと正確な文脈に関する情報が不可欠です。

DVDM

Re:ZeroMemoryが使えない?

#7

投稿記事 by DVDM » 15年前

>>山口さん
[color=gray>>下記で出来たのですがあっているのでしょうか?[/color]
正しい動作になっているかどうかは、簡単なサンプルを作って出力してみればすぐに解ると思います。
あるいはデバッガをお使いになるとかですね。


[color=gray>>ただ構造体で作ったものを初期化しようと思っているのですが[/color]
ただ単にStrNumを初期化したいのであれば、Mess.StrNum = 0; でも構わないと思いますが
構造体の中身全部を言っているのであれば
ZeroMemory(&Mess, sizeof(Mess));
あるいは、ZeroMemory(&Mess, sizeof(MESSAGE));
で大丈夫だと思います。
ZeroMemoryの正体はmemset関数なので、解らなければそちらも調べてみてください。

閉鎖

“C言語何でも質問掲示板” へ戻る