Pour la création d'un programme, je dois créer une "petite" machine virtuelle en C++, lors de la conception des bases de celle-ci sous Visual Studio, aucunes erreurs ne m'est indiqué, lors du buid, tout fonctionne nickel, du moins, c'est ce que je pensais... En effet, lors des premiers tests, mon programme s'ouvre, mais affiche une boite de dialog générée par le "header vector" si mes recherches sont bonne. Au début j'ai cru que s'était un simple débordement de mémoire, ou un truc du genre.
Voici la boite de dialog :
Je ne vais pas vous partager tous mes codes, se serait de trop, voici juste le fichier qui génère l'erreur lorsque je debug en "pas à pas détaillé" :
(désoler, c'est quand même un peu long, et pas toujours facile à lire, je sais mais j'ai mis tout le contenu du fichier parceque je ne sais pas quel partie bug)
Voici la hyerarcie des fichies :
stack-VM.h
main.cpp
stack-vm.cpp
Ayant deux fichiers sources (.cpp), je me dis que c'est peut être une cause d'erreur...
Voilà, si vous avez besoin d'autre informations, dite le moi
Bonjour, voici alors la façon avec laquelle j'ajoute les éléments dans le vecteur :
#ifndef STACK_VM_H
#define STACK_VM_H
#include <iostream>
#include <vector>
// type definitions
typedef int32_t i32;
class StackVM {
i32 pc = 100; // program counter
i32 sp = 0; // stack pointer
std::vector<i32> memory;
i32 typ = 0;
i32 dat = 0;
i32 running = 1;
// private function
i32 getType(i32 instruction);
i32 getData(i32 instruction);
void fetch();
void decode();
void execute();
void doPrimitive();
public:
// public functions
StackVM();
void run();
void loadProgram(std::vector<i32> prog);
};
#endif
Normalement, le programme vas chercher là où il doit dans le vecteur, et ne dépasse pas la pile d'appel... Enfin, je pense xD (je suis un peu fatiguer ^^)
C'est ça que je ne comprend pas trop... parce que les codes que j'ai présenté, son "juste", évidemment il y a toujours moyen d'optimiser, mais je ne comprend pas d'où vient l'erreur...
Je n'ajoute pas d'éléments, avec pushback(), j'utilise les operators. Mais c'est vrai qu'après réflexion, je ne peux pas les utilisé, puisque aucuns éléments ne se trouve dans le vecteur...
Je suis désoler si le problème parait tout bête, et ne pensez pas que je veuille que l'on face le travaille à ma place, et je sais aussi que dire que je suis plus ou moins débutant n'est pas une "excuse".
Mais pourriez-vous m'expliquer alors comment je dois faire pour ajouter les éléments ?
Mais pourriez-vous m'expliquer alors comment je dois faire pour ajouter les éléments ?
memory.push_back(valeur à ajouter)
Attention, la fonction reserve(100000) ne crée par un vecteur de 100000 éléments. Elle ne fait que s'assurer que le vecteur pourra accueillir 100000 éléments sans être relocalisé.
Si ton besoin est d'avoir 1000000 d'éléments à utiliser à ta guise, il suffit de faire memory.resize(1000000) plutôt que memory.reserve(1000000) ensuite tu pourras utiliser les memory[pc] tant que pc<1000000.
Merci infiniment ! .resize était la solution, merci beaucoup Dalfab
Et merci aussi à toi, zoup pour ton aide
Aaaa, ca fait du bien de pouvoir continuer sans erreur un gros projet xD
Le doute est le commencement de la sagesse
[erreur] vector subscript out of range
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.