ページ 1 / 1
ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 16:16
by 山口
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が使えない?
Posted: 2009年12月31日(木) 16:21
by たかぎ
> Mess.Str = 2;
> この後Mess.strを表示すると2が入っております。
Strおよびstrとは?
DXライブラリとのことですが、C++ではなく別の言語にバインディングしているのでしょうか?
Re:ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 16:24
by 山口
すみません。
Mess.StrNumのことです。
DXライブラリというよりはC言語の予約語でしたね。
使い方が違うのでしょうか。
Re:ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 16:30
by たかぎ
> DXライブラリというよりはC言語の予約語でしたね。
意味がわかりません。
> Mess.StrNumのことです。
だとすると...
> ZeroMemory( &Mess, sizeof(&Mess) );
↑上の部分が間違っています。
sizeof(&Mess)ですので、ポインタのサイズ分しかゼロクリアされません。
この部分も転記ミスがなければの話ですが...
Re:ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 16:43
by 山口
下記で出来たのですがあっているのでしょうか?
ZeroMemory( &Mess, sizeof(MESSAGE) );
Re:ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 16:46
by たかぎ
> あっているのでしょうか?
あっているかどうかを判断するには、何をやりたいのかと正確な文脈に関する情報が不可欠です。
Re:ZeroMemoryが使えない?
Posted: 2009年12月31日(木) 21:32
by DVDM
>>山口さん
[color=gray>>下記で出来たのですがあっているのでしょうか?[/color]
正しい動作になっているかどうかは、簡単なサンプルを作って出力してみればすぐに解ると思います。
あるいはデバッガをお使いになるとかですね。
[color=gray>>ただ構造体で作ったものを初期化しようと思っているのですが[/color]
ただ単にStrNumを初期化したいのであれば、Mess.StrNum = 0; でも構わないと思いますが
構造体の中身全部を言っているのであれば
ZeroMemory(&Mess, sizeof(Mess));
あるいは、ZeroMemory(&Mess, sizeof(MESSAGE));
で大丈夫だと思います。
ZeroMemoryの正体はmemset関数なので、解らなければそちらも調べてみてください。