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

new et delete

sonic66
sonic66
Niveau 10
17 mai 2005 à 21:03:23

j´ai mal compris ces deux ( heu , comment on dit deja ^^) :
en gros , si j´ai bien compris , ca permet de leur donner une adresse avec new et de l´enlever avec delete?

on peut m´expliquer un peu plus la???

fil_razorback
fil_razorback
Niveau 10
17 mai 2005 à 21:03:42

Sous rpg maker? :sarcastic:

tomtomclancy
tomtomclancy
Niveau 9
17 mai 2005 à 21:09:19

non je pense pas que ce soit en RPG machin

tu veux parler du C/C++

le new te renvoie un poiteur vers l´adresse memoire ou tu creer ton objet, il te sert a initialiser la taille d´un tableau par example.

et le delete est INDISPENSABLE pour chaque new que tu fait, generalement associé dans le destructeur de ton objet.

le new te creer un espace memoire, et le delete te le supprime.

dans le cas ou tu ne le delete pas a chaque fois que tu lancera ton appli il te recrera un espace memoire ailleur, et ainsi tu sature ta ram.

c´est ce qu´on appel plus communement une fuite de memoire, memory leak, qui sont indiquer par ton compilateur en mode debug

fil_razorback
fil_razorback
Niveau 10
17 mai 2005 à 21:12:59

" TomtomClancy
Posté le 17 mai 2005 à 21:09:19 Avertir un administrateur à propos de ce message !
non je pense pas que ce soit en RPG machin "

Second degré pawa ^^

sonic66
sonic66
Niveau 10
17 mai 2005 à 21:30:48

heu , en fait , lavantage et que , comme " on sait" ( ou plutot delete et new savent ^^) l´adrsse de l´objet , on peut donc supprimer l´objet quand on veut et ca economise donc de la place! :)

c´est ca?

et sinon , j´ai oublié de mettre c++ dans le titre :-( , dsl a lapintade et aux autres :-(

lockscash
lockscash
Niveau 6
17 mai 2005 à 21:43:58

En fait il faut que tu sache quelques truc dans l´allocation des objects.
Tu peux allouer de l´espace mémoire pour un object de 2 manières : Statiquement et Dynamiquement.
Pour être un peu plus technique soit sur " la pile " soit sur " le tas "

Ce qui ya c´est que la pile est plus petite que le tas, en gros tu ne pourras pas déclarer un tableau de 6 millions d´entier statiquement ( donc sur la pile).

Encore une chose, les object alloués statiquement ( attention ne pas confondre avec le mot clé " static " qui a d´autres significations) n´ont pas besoin d´un appel à delete pour être libérés.

quand tu alloue un object avec new :
CObject monObject = new CObject();
tu réserve dans ta mémoire un espace de la taille d´un CObject. Si tu n´utilise pas delete pour libérer cet espace, celui-ci restera réservé jusquà un prochain redémarrage du PC. SAUF QUE si tu quitte t´on application et que tu la relance, il n´utilisera pas cet espace car il est déja reservé par ton application mais lors de l´ancienne exécution ( oula je suis tordu la... désolé).

En gros n´oublie JAMAIS comme la dit Tomtom de faire:
delete monObject;
Lorsque tu n´en a plus besoin.

Au fait " new " et " delete " sont des opérateurs, t´avais l´air de chercher le nom :p)
Attention quand même, l´opérateur " new " est assé lourd, pour un bon fonctionnement d´une application tu fait tout les " new " au début même si tu te sers pas tout de suite des objects et seulement à la fin, tu fait tout les " delete " .

Voila. J´espère avoir été clair et pas avoir dit une conneries :rire:

MrGoTo
MrGoTo
Niveau 8
17 mai 2005 à 21:45:45

New permet de pointeur sur une variable qui est allouer dynamiquement c´est à dire qu´on lui donne de la memoire au cours du programme. Delete permet de detruire cet espace memoire. Ces deux " keywords" sont l´equivalent de malloc et free du C à ceci près qu´ils permettent l´appel du constructeur et du destructeur d´une classe.

sonic66
sonic66
Niveau 10
17 mai 2005 à 21:50:43

Encore une chose, les object alloués statiquement ( attention ne pas confondre avec le mot clé " static " qui a d´autres significations) n´ont pas besoin d´un appel à delete pour être libérés.

mais alors , quel est lavantage a les allouer dynamiquement?

et comment on les alloue statiquement?
ON DECLARE UNE VARIABLE SANS NEW ? ???

Lapintade
Lapintade
Niveau 30
17 mai 2005 à 21:51:36

sonic66 > Indique de quoi tu parle dans ton titre. Genre " [C++] new delete". Merci.

sonic66
sonic66
Niveau 10
17 mai 2005 à 21:52:47

desole , je ferait plus attention la prochaine fois

sonic66
sonic66
Niveau 10
17 mai 2005 à 22:12:45

personne n sait? :-(

lockscash
lockscash
Niveau 6
17 mai 2005 à 22:14:38

He bien oui, tu peux déclarer des objects et des tableaux sans utiliser l´opérateur " new "

int Array[10];
/ /Tableau déclaré statiquement

int [] Array = new int[10];
/ /Tableau alloué dynamiquement nécessitant un " delete "

Pareil pour les objects.
CObject monObject();

et

CObject monObject = new CObject();

Je sais.. de prime à bord ca peu paraître etre la même chose. Mais c´est avec l´expérience et à force de programme que tu saura quoi utiliser et quand. Te faire une liste de quand utiliser l´un ou l´autre est impossible

Ruffi
Ruffi
Niveau 9
17 mai 2005 à 22:16:35

Corection du post de Locks :

int* Array = new int[10];
CObject* monObject = new CObject();

En precisant que dans le cas du Array, tu devra l´effacer comme cela : delete [] Array ( pour indiquer que tu efface un tableau)

sonic66
sonic66
Niveau 10
17 mai 2005 à 22:19:33

si j´ai comprix , ca permet de mieu gerer la memoire......

mais , par exemple dans ca : int* Array = new int[10];

si on fait delete , c´est seulement le tableau qui disparaitra ou le array???

sonic66
sonic66
Niveau 10
17 mai 2005 à 22:25:22

?

Musashi001
Musashi001
Niveau 10
17 mai 2005 à 22:27:13

hmm il me semble ( mais je peut me tromper et ca ne serait guère étonnant) que quand tu utilise deltee il supprime les deux.

Sinon si quelqun pouvait me dire quelle méthode de déclaration d´objet utiliser ( static ou dynamic)? Dans quel contexte en général?

sonic66
sonic66
Niveau 10
17 mai 2005 à 22:28:32

ca depend de combien de memoire te faudra utiliser! :)

lockscash
lockscash
Niveau 6
17 mai 2005 à 22:29:52

oups désolé Ruffi... j´avais oublié la petite n´étoile pour l´object. Sinon pour le :
int [] Array = new int[10];
Ceci ne marche qu´en JAVA... donc pardon j´ai confondu. Le post de Ruffi me corrige très bien.

Sinon quand tu fait delete, tu libère l´espace mémoire réservé par ton tableau Array. Mais tu ne supprime pas pour autant ton pointeur Array, sauf que celui ci pointe sur " rien " , tu peux t´en resservir ou le laisser se détruire tout seul à cause de sa porté.

Musashi001
Musashi001
Niveau 10
17 mai 2005 à 22:32:26

donc si j´ai bien compris Ruffi, quand tu crée un objet en static, il reste tout le temps et donc prend toujours de l´espace mémoire(même une fois son action terminée).
Alors que si je le déclare en dynamic je peut le libérer une fois utiliser. C´est ca?

sonic66
sonic66
Niveau 10
17 mai 2005 à 22:33:03

a , c´est bien ca!

tu^peut faire des truc du genre

si il faut caser un tablo ( un exemple) , je supprime le precedent tu pointeur a et je le remplace par le nouvo!

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