Q1. En Java, tous les objets, tableaux et variables de classe sont stockés sur le tas. Est-ce la même chose pour C++? Le segment de données fait-il partie de Heap?Stack Frame Question: Java vs C++
Qu'en est-il du code suivant en C++?
class MyClass{
private:
static int counter;
static int number;
};
MyClass::number = 100;
Q2. Autant que je sache, les variables auxquelles une valeur spécifique est donnée par le compilateur sont stockées dans le segment de données, et les variables globales et statiques non initialisées sont stockées dans BSS (Block started by symbol). Dans ce cas, MyClass :: counter étant statique est initialisé à zéro par le compilateur et donc il est stocké dans BSS et MyClass :: number qui est initialisé à 100 est stocké dans le segment de données. Ai-je raison de conclure?
Q3. Tenez compte suivant morceau de code:
void doHello(MyClass &localObj){
// 3.1 localObj is a reference parameter, where will this get stored in Heap or Stack?
// do something
}
void doHelloAgain(MyClass localObj){
// 3.2 localObj is a parameter, where will this get stored in Heap or Stack?
// do something
}
int main(){
MyClass *a = new MyClass(); // stored in heap
MyClass localObj;
// 3.3 Where is this stored in heap or stack?
doHello(localObj);
doHelloAgain(localObj);
}
J'espère avoir fait mes questions claires à tous
EDIT:
S'il vous plaît se référer ce article pour une certaine compréhension sur BSS
EDIT1 : Changé le nom de classe de MyInstance à MyClass car c'était un nom médiocre. Sincère Toutes mes excuses
EDIT2: Changé le membre de la classe nombre variable de non-statique statique
Chaque fois que vous appelez 'new', vous êtes allouer de, ce qui signifie que tout ce que vous créez avec' new' est en effet stocké sur le tas. Je n'ai aucune idée de ce que vous entendez par "le segment de données fait-il partie de Heap?". –
MyClass :: number = 100; ne compilera pas. Voulez-vous dire contre? –
numéro de variable membre modifié en statique – pankajt