ポインタ死ね。
■ このスレッドは過去ログ倉庫に格納されています
0669デフォルトの名無しさん
2006/04/26(水) 17:11:17こんな感じ。
#include "stdafx.h"
#include<windows.h>
//---------------------------
void f(char*& p)
{
p = new char[256]; // <--- この p は、main の pm を参照してる(同じ)
lstrcpy(p, "abc\n");
}
//---------------------------
void f2(char* p)
{
p = new char[256]; // <--- この p は、main の pm と別物(f2の中だけで有効)
lstrcpy(p, "abc\n");
}
//---------------------------
int main(int argc, char* argv[])
{
char* pm = NULL;
f(pm); // 参照タイプ
printf(pm); // <--- pmのなかに、f のなかで確保したメモリのアドレスが入ってる。
delete pm;
pm = NULL;
f2(pm);
printf(pm); // <--- pmのなかには、NULLがはいってるからエラー。
delete pm;
return 0;
}
void f(char*& p) の場合は、pm自体のアドレスが渡されて、
void f(char* p) の場合は、pmの中身が渡される。
■ このスレッドは過去ログ倉庫に格納されています