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

DevC++ & Memoire et plantage...

arnaud81
arnaud81
Niveau 7
15 novembre 2002 à 19:45:49

salut a tous.

g un pb, et jaimerais votre avis dessus.

je fais pFrac = new WIRE[6*1024*1024]; //(6Meg)
avec pFrac, pointeur sur type WIRE.

Figurer vous que ca plante. c pas que pFrac=0. Le programme plante a cette ligne. sans message.

Qu est ce que vous en pensez ? Comment reagit les autres compilateurs ?

Merci

arnaud81
arnaud81
Niveau 7
15 novembre 2002 à 19:49:25

en fait, y a une petite erreur :

le type WIRE fait 24 octets donc je demande en
realite 144 Mo... nempeche... est ce normal que ca reagit ainsi ?

PS: structure WIRE = 2 * 8 double

Trapamoosch
Trapamoosch
Niveau 5
15 novembre 2002 à 21:42:06

je crois que tu t´es planté dans le calcul

6*1024*1024*2*8*sizeof(double) = 3Go : )

Trapamoosch
Trapamoosch
Niveau 5
15 novembre 2002 à 21:56:06

ah nan, je dit n´imp, ça serait :

6*1024*1024*2*8*sizeof(double) = 768 Mo (ce qui est probablement trop et donc new renvoit NULL)

arnaud81
arnaud81
Niveau 7
16 novembre 2002 à 15:24:36

peut etre trop, mais arrive a cette line je ne peux pas tester la valeur du pointeur car le programme plante.... "abnormal program terminaison" (prog console).

y juste la declaration de quelques variables avant. je fais rien dautre. pas dappel de fonction, rien.
----
Bon je crois que g merde pour la calcul de la taille de l struct. mais pourquoi g pas fait sizeof(wire) ? : )
struct wire{
double x1,y1,z1;
double x2,y2,z2;
int type;
};
ce qui doit faire 50 octets...
donc new WIRE[50*6*1024*1024] = 300Mo

En fait, je fais des calculs de fractales et donc j ai besoin de cette memoire : )
--------------------------------------
Petit detail peut eter : l OS est w2000.

Lightness1024
Lightness1024
Niveau 10
16 novembre 2002 à 22:05:32

si ta besoin de 300 Mo tu vas etre obligé de fragmenter en plusieurs tableaux.
on ne peux pas allouer plus de 100 Mo avec un new.
ou difficilement.
et tu peux utiliser ma classe SecureArray:

http://www.cppfrance.com/article.aspx?Val=840

tu vas voir c un bon truc, ca evite les buffer overrun. (lis l´aide en . chm je me suis tué a faire ca c pas pour rien : )
sinon on peu pas compiler tan kon connais pas ton type wire alors si tu veu kon essayes file nous ta structure.

Lightness1024
Lightness1024
Niveau 10
16 novembre 2002 à 22:06:49

ok pour la struct g pas bien pu voir parce ke y´avais pas d´indentation, je v donc tester ca de suite

Kelios
Kelios
Niveau 8
17 novembre 2002 à 03:43:49

Je suis ici en personne tierce, et je n,ai aucune solution pour votre problème : (

Cependant, en ma grande curiosité, je suis allé voir le secureArray de Lightness1024 et je n,ai qu´un mot à dire.

Q.: Quel est le mot?

a) Génial
b) Bravo!
c) Bien fait
d) Toutes ces réponses
e) Aucune de ces réponses
f) Une tortue
g) Le capitaine
h)...............Bon d,accord, j,arrête.... ; D

Faudra qu´je pense à en faire une aussi, une classe template du genre(sans pour autant m´inspirer de la tienne, je DÉTESTE le copiage de sources).

Voyez cette remarque comme autant néanmoins neutre, sans arrière-pensée, arrière-gout et arrière-grand-mère.

Sur ce....

Kelios
---------

Lightness1024
Lightness1024
Niveau 10
17 novembre 2002 à 09:18:09

on dirais que tu t´inspires de François Pérusse : )

arnaud81
arnaud81
Niveau 7
18 novembre 2002 à 17:58:13

Je suis meduse ! : 0

NbWireDes = 5 * NbWireSrc;
cout << "Init. have "<< NbWireSrc << " wires.\n";
cout << "New have "<< NbWireDes << " wires.\n";

// Alloue le nombre necessaire de fils pour cette antenne !
pFDes = new WIRE[NbWireDes];

Je veux bien croire que je my prend mal.. mais pourquoi ca plante directment NbWireDes = 187 500 000 ?
plante="Abnormal program terminaison" et non pas pFDes = 0;
Bon, je me teste ni ne compile sur ma machine (mais celle de luniversite), donc.. : ) Mais merci Lightness davoir passe pratiquement 1/2 heure a me montrer que ca marche ; )

PS : Desole pour ta class mais quand je louvre avec Winzip 8.1 je ne vois aucun fichier... Bordel y a que des merdes sur ces machines... Mais pourqupoi j ai pas mon PC avec moi ! !!!!

arnaud81
arnaud81
Niveau 7
18 novembre 2002 à 18:07:38

Bon , merde encore une fois : )

NbWireDes = 7 812 500,

soit 7812500 * (8 * 3 + 4) = 387.43 Mo...

Vous savez koi ? Je vais chercher encore a gauche et a droite voir ce qui merde.
Lightness : je vais le teste new byte[1024*1024*x] pour voir si ca marche !
x=150,300,400,700,1400.

arnaud81
arnaud81
Niveau 7
18 novembre 2002 à 18:58:51

bon, je viens de tester le + simple au monde : regarder !

char *p;
p = new char[1024*1024*300];

avec 300, ca marche... avec 400 ca plante...
en petits tableaux, ca marche pas. quand je depasse les 400 mo, ca plante !

bon, g 128Mo de ram sur la becane et 350 Mo de memoire virtuelle... jimagine que 100M0 sont pris par w2000 ce qui dois faire le compte... Pas de chance, g pas les droits pour changer la taille de la memoire virtuelle !

Ce qui resoud le probleme : ) Merci les gars ! (mais comme koi, ca merde un DevC++ ; )

Lightness1024
Lightness1024
Niveau 10
23 novembre 2002 à 12:43:39

ok je suis content ke t pu eclaircir le probleme.

@#; Lightness1024! <- celui ki dit "groovy"

arnaud81
arnaud81
Niveau 7
23 novembre 2002 à 14:30:12

bah oui et non....lorsque on demande plus de memoire que ce qui est disponible, c plante le programme , ca renvoit pas pointeur=0

donc c la merde comme meme !

Lightness1024
Lightness1024
Niveau 10
23 novembre 2002 à 18:31:11

en effet, c meme bizare.
vérifie si y´aurais pas une option de compilation a activer ou un truc.

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