void EventsStack::push(Event *e){
EventNode *q = new EventNode();
q->data = e;
q->next = _top;
_top = q;
}
void main() {
EventsStack eventStack;
Event e1(1);
eventStack.push(&e1);
Event e2(2);
eventStack.push(&e2);
}
最初の質問: 私がするとき
eventStack.push(&e1);
e1 の ADDRESS をプッシュ関数に送信し、プッシュ関数はそれをポインターとして受信していますか? 私がやっているかのように:
Event *e = 1000 (1000 is the offset (address) of e1 for example on the stack)
?
2 番目の質問: main 関数を実行したときのスタックを説明するように求められました。ラインに着いたら
eventStack.push(&e1);
4 バイトの戻りアドレスと e1 への 4 バイトのポインターが関数のアクティブ化フレームとして割り当てられますか、またはこの状況では、eventStack はクラス EventsStack のオブジェクトであり、プッシュはそのメンバー関数の 1 つであるため、アクティブ化フレームはありませんか?