我想了解會發生什麼,如果我們分配靜態函數內的動態內存?每次調用靜態函數都會返回相同的內存,或者每次創建新內存?動態內存分配裏面的靜態函數
對於示例 -
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";
}
在該程序中主兩個存儲器位置()是不同的。如果我們移動static int * p;在allocate_memory()函數內部,像static int * p = new int;兩個內存位置都會一樣。
我想了解有什麼不同。靜態總是靜態的,天氣是內部類還是內部函數,那爲什麼行爲不同?
Devesh