Re: KeyInputString等の引数に用いるchar型の配列 ( No.1 ) |
- 名前:クラスクラス 日時:2011/08/11 06:54
ある条件では、運良く動くかもしれないけど、
基本的に問題が起こります。
↓こうしないと
string name;
char wstr[40];
KeyInputString( 0 , 16 , 30 , wstr , FALSE ) ;
name = wstr;
|
Re: KeyInputString等の引数に用いるchar型の配列 ( No.2 ) |
- 名前:Will 日時:2011/08/11 09:28
c_str()の戻り値は「const char*」なので、そのポインタは文字列のリード以外で使用してはいけません。
c_str()で取得したポインタに対して書き込みを行った場合、メモリの動的確保が適切に行われないためメモリ破壊を引き起こす可能性が非常に高いです。
|
Re: KeyInputString等の引数に用いるchar型の配列 ( No.3 ) |
- 名前:まろ 日時:2011/08/11 12:49
お二方ともありがとうございます。
やはり基本的には静的にメモリ確保したものを利用しないとよくないという事ですね。
よく分からないまま、
KeyInputString( 0 , 16 , 30 , (TCHAR *)name.c_str() , FALSE ) ;
のように書いた所、DrawString関数で表示を行う事が出来てしまったため、もしかしたら出来るのかな?と思い質問させていただきました。
(constに対する処理は打ち消されると思っていたため)
偶然動きはしたものの、stringの長さは0のままだったりと挙動がおかしかったので、素直にchar型の配列を使おうと思います。
やはりポインタは便利なようで難しいですね。
|