我很清楚爲C++中的struct動態分配內存。dynamiclly爲類分配內存
struct Node
{
int item;
struct Node *next;
};
int main()
{
struct Node *head = new struct Node;
return 0;
}
這是一張圖片。
有在堆上分配8字節的存儲器,頭是一個指向它的指針。
但是,當我遇到dynamiclly爲班級分配內存時,有幾個問題困擾了我很長一段時間。有一個例子:
class Example
{
private:
int a;
double b;
public:
virtual void fun();
void fun2();
};
int main()
{
Example *e = new Example;
}
void Example::fun()
{
}
我的問題是:
1.I知道系統爲int和double在堆中分配內存,對系統做也分配爲樂趣內存()和FUN2()堆?如果沒有,fun()和 fun2()存儲在應用程序內存中的哪裏?
2.在堆中分配了多少字節?
3.指針e如何解引用函數fun()或fun2()?
4.取消引用普通函數和取消引用虛擬函數有什麼區別?
FYI:'結構節點* X;'是C,C++中它的'節點* X;',除非你真的想該結構的向前聲明。你也不要寫'class example * e;'或'enum example e;'。 –
'fun()'和'func2()'只是程序的文本段中加載的指令塊(編譯後) –
它們的大小(即函數)是未知的,並且完全實現定義 –