タグ

ブックマーク / www.usefullcode.net (4)

  • 紛らわしいぞ!LPCTSTR、LPTSTR、LPSTR、LPCSTRは全部意味が違う!(UsefullCode.net)

    UsefullCode.net Visual Studio 2005/2008/2010やandroid SDK/NDKでの開発者向けに便利なソースコードを提供 This site provide you with useful source codes under 'USEFULLCODE license'. TCHAR系の型というのは初めての人にとっては非常に理解しにくい。理解できれば使えるようになるのだが、そうなっても実装に間違えることが多々ある。その理由がこれ。LPCTSTR、LPTSTR、LPSTR、LPCSTR、LPWSTR、LPCWSTRの6つが全て意味が違うということ。ぱっと見ではほとんど同じだがよく見ると「C」が付いていたり、「T」が1つ多かったりと微妙にスペルが異なっている。 これがどう違うのかと言うと... LPSTR = char* LPCSTR = const c

  • メモリ内容を確実に消すときはSecureZeroMemoryを使うべき(UsefullCode.net)

    UsefullCode.net Visual Studio 2005/2008/2010やandroid SDK/NDKでの開発者向けに便利なソースコードを提供 This site provide you with useful source codes under 'USEFULLCODE license'. これはよく知られた問題だ。パスワードなど流出しては困る重要なデータを扱うときは、使い終わった後のメモリ内容を消さないと、そこから流出する可能性がある。そのため以下のようなソースコードにして使い終わったパスワード内容をメモリから消す。 ■うまく動かない例 void Test(void) { char pszPassword[256]; //パスワード入力 ::strcpy_s(pszPassword,256 * sizeof(char),"password-string"); //パ

  • TCHARとかLPCTSTR、LPTSTRって何???(UsefullCode.net)

    UsefullCode.net Visual Studio 2005/2008/2010やandroid SDK/NDKでの開発者向けに便利なソースコードを提供 This site provide you with useful source codes under 'USEFULLCODE license'. Windowsプログラミングからは切っても切り離せないのが、TCHARと、LPCTSTR、LPTSTRなどのTCHAR系列の型。結論から書くとこれはソースコードをユニコードと非ユニコード両対応にするための型だ(何のことだかサッパリ分からないって?こういうプログラミングの授業じゃ習わない意味不明な拡張が多いからWindowsプログラミングはややこしいんですよね)。 何も考えずに ・TCHAR = char ・LPCTSTR = const char* ・LPTSTR = char*

  • 文字列を示す "abc"、_T("abc")、L"abc" は全て意味が違う!(UsefullCode.net)

    UsefullCode.net Visual Studio 2005/2008/2010やandroid SDK/NDKでの開発者向けに便利なソースコードを提供 This site provide you with useful source codes under 'USEFULLCODE license'. 文字を代入するときに使う " " (ダブルクオーテーション)。Windowsプログラミングでは_T(" ") を見かけることが多いから、それに倣って... char pszText[256]; strcpy(pszText,_T("あいうえお")); というようなソースコードを書いていないだろうか?残念ながらこれは大きな間違えだ。実はこの _T(" ")いうのはcharやWCHARに対してTCHARがあるのと同じで、ユニコードビルド時はユニコード文字列を、非ユニコード文字列時はSH

  • 1