静的関数内に動的メモリを割り当てるとどうなるか知りたいですか? 静的関数を呼び出すたびに同じメモリが返されるか、新しいメモリが作成されるたびに??
例えば-
class sample
{
private:
static int *p;
public:
static int* allocate_memory()
{
p = new int();
return p;
}
};
int* sample::p=NULL;
int main()
{
int *p= sample::allocate_memory();
int *q = sample::allocate_memory();
cout << p << " " << q << endl;
if (p== q)
cout << "we are equal";
}
このプログラムでは、main() 内の両方のメモリ位置が異なります。static int *p; を移動すると、static int *p = new int; のように、 allocate_memory() 関数内。両方のメモリの場所は同じになります。
何が違うのか理解したい。static は常に static であり、クラス内または関数内にある場合、なぜ動作が異なるのですか??
デベシュ