CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

std::bad_alloc

infiltrator
infiltrator
Niveau 5
19 juillet 2016 à 15:08:05

Salut ! alors voilà j'ai un petit problème en C++ avec le code suivant : https://github.com/thewrath/cppTest
lorsque je le lance le programme ne répond plus et la console me renvoie l'erreur std::bad_alloc, je sais que ça vient de ma classe Map dans la méthode generateMap mais je vois pas pourquoi, j'ai fait des recherches par rapport à cette erreur et c'est une histoire de mémoire, à ce que j'ai vus il faut que je me penche sur l'allocation dynamique et les pointeur intelligent.Mais en attendant je n'arrive pas à corriger ce problème... De plus les exemples qui vont avec ce genre de problème sont loins de s'adapter avec ma situation ... Bref merci de votre dans tout les cas !

LGV
LGV
Niveau 28
19 juillet 2016 à 15:20:44

utilise un debugger pour tracer ton code jusqu'au alloc pour verifier les parametres ; consulte la doc pour connaitre les details des erreurs et les causes possibles courantes.

infiltrator
infiltrator
Niveau 5
19 juillet 2016 à 16:08:28

le debuggeur me renvoi ça : #6 0x0042fde8 in __gnu_cxx::__alloc_traits<std::allocator<Block> >::allocate (__a=..., __n=33554432) at C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/ext/alloc_traits.h:182

Ce qui est impossible pour moi à comprendre...

Candystand
Candystand
Niveau 10
19 juillet 2016 à 16:42:27

EN fait dans ta boucle for, tu fais i < gameMap.getSize(), et ton getSize() return un sizeof de ton vector...ce qui n'est pas bon (en tout cas j'en suis quasi sur). Je pense que si ton getSize return juste mapArray.size(), tu n'auras plus le bad_alloc

tiens moi au jus :)

infiltrator
infiltrator
Niveau 5
19 juillet 2016 à 17:13:13

Malheureusement ça ne change rien ... [[sticker:p/1lmk]]

1234_bou
1234_bou
Niveau 9
19 juillet 2016 à 17:25:14

Tu fais un sizeof de ton vector, ce qui fait aucun sens parce que sizeof te retourne des bytes alors que tu veux le nombre de "cases" dans ton array.

Soit tu fais sizeof(Array)/sizeof(Array[0]) (ce qui est une mauvaise pratique sur un vector) ou tu fais Array.size();

Tcho.

1234_bou
1234_bou
Niveau 9
19 juillet 2016 à 17:27:10

En plus tu peux faire un safe check.

if(Map.size() < i)
printf("Erreur index invalide, taille %d, indice %d", Map.size(), i);

dans ton Draw de map.cpp

Candystand
Candystand
Niveau 10
19 juillet 2016 à 17:36:14

Je pense voir l'erreur


void Map::generateMap(int x, int y)
{
    for(int i=0;i<(y/50);i++)
    {
        for(int j=0;i<(x/50);j++)
        {
            mapArray.push_back(Block(j*50,i*50,50,50));
        }
    }
}

Deuxième for:

for(int j=0;i<(x/50);j++)

tu as mis i < (x / 50) au lieu de j < (x / 50)

infiltrator
infiltrator
Niveau 5
19 juillet 2016 à 17:49:30

Au merci ! pourtant je l'ai regardé mille fois cette boucle ! je ferais plus de copier coller :sarcastic:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment