0
#ifndef UNICODE
#define UNICODE
#endif
#include <Windows.h>
#include <cstdio>
TCHAR* getSystemVolumine()
{
TCHAR volumine[2];
TCHAR buffer[30];
GetSystemWindowsDirectory(buffer,30);
for(int i=0 ; i < 2 ; i++)
volumine[i]=buffer[i];
return volumine;
}
int main()
{
wprintf(L"Your system volumine letter%s\n",getSystemVolumine());
system("pause");
}
このコードで何が問題になるのかわかりません。デバッグがどちらもエラーや警告を示したが、出力は次のとおりです。あなたは関数が戻ってきたローカル変数へのポインタを返すされているWindowsシステムディレクトリを含むドライブの文字を取得する
Your system volumine letter
Press any key to continue...
私はvolumine変数、静的を作ることは非常にsimplier解決することだと思う:) – 0x6B6F77616C74
だけFWIW:一般的には、コードは、後にマルチスレッド行われた場合、あなたが問題に実行しないように、静力学の使用を避けることをお勧めします。呼び出し元にバッファを提供させるか(上記)、関数が新しいバッファを返すようにするのがよりクリーンであると考えられます。シングルスレッドコードであっても、コードの一部がポインタを節約し、後で呼び出しがバッファ内の値を変更すると、問題が発生する可能性があります。しかし、この特定のケースでは、システムディレクトリは一定であり、プロセスの存続期間中は変更されないため(すべてのスレッドで同じです)、ここでは静的であり、安全です。 – BrendanMcK