我想了解如果我们在静态函数中分配动态内存会发生什么?每次调用静态函数都返回相同的内存,还是每次创建新的内存?
例如-
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; 在 allocate_memory() 函数内部,例如 static int *p = new int; 两个内存位置都将相同。
我想了解有什么区别。静态总是静态的,天气它在类或函数内部,那么为什么行为不同?
德韦什