Question

Je suis tout simplement jouer avec un ++ noyau C-démarrage sans tête dans visual studio 2010.

J'ai arrivé au point où j'ai écrit et d'en supprimer et des choses comme le travail des tableaux comme alloué dynamiquement. Je peux utiliser des listes de STL, par exemple. Je peux même les trier, après avoir écrit une routine memcpy. Le problème est quand j'utilise le type std :: vecteur. construire simplement le vecteur envoie hors du noyau dans la la terre.

Il est évident que je manque une implémentation de la fonction de quelque sorte, mais je regardé à travers la recherche de STL pour elle et est venu les mains vides. Il échoue au push_back:

vector<int> v;
v.push_back(1);

et disparaît dans l'éther.

Toutes les suppositions quant à ce que je suis absent?

Modifier oui c'est vecteur d'int. Désolé pour la confusion. Non seulement cela, mais ce n'est pas le constructeur, il échoue sur, il est un appel à push_back.

Était-ce utile?

La solution

Comme par notre discussion ci-dessus, créant ainsi un

std::vector<mySimpleStruct> v;

au lieu d'un

std::vector<int> v;

semble fonctionner correctement. Cela doit signifier que le problème est quelque chose de fait dans la spécialisation de certaines fonctions pour std :: vecteur dans votre bibliothèque de modèle standard. Je suppose que vous êtes familier avec la spécialisation de modèle déjà, mais si vous n'êtes pas:

http://www.parashift.com/c++ -FAQ-lite / templates.html # faq-35,7

En outre, une fois que vous avez trouvé où le vrai problème est, pourriez-vous revenir et poster la réponse ici? Vous me avez curieux de savoir où le vrai problème est maintenant, plus la réponse est peut-être utile pour les autres essaient de construire leurs propres noyaux OS.

Autres conseils

Stab dans l'obscurité: Avez-vous mis en œuvre new[] et delete[]? Une liste va créer un élément à la fois avec new alors qu'un vecteur sera probablement attribuer le plus gros blocs de mémoire avec new[].

Utilisez-vous un allocateur personnalisé ou un par défaut?

Vous pouvez essayer d'utiliser un personnalisé juste pour voir ce que les allocations vecteur peforms qui pourrait détruire votre mise en œuvre du gestionnaire de mémoire (ce qui est probablement ce qui ne fait).

Et oui, s'il vous plaît poster une fois que vous le résoudre -. Il aide tous les autres OSdevers là

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top