Moet je mallocen in C++?
Moet je mallocen in C++?

Video: Moet je mallocen in C++?

Video: Moet je mallocen in C++?
Video: Одна из причин изменить ваш распределитель памяти (C/C++) 2024, Mei
Anonim

Jij gebruik maken van malloc wanneer jij hebt nodig om objecten toe te wijzen die moeten bestaan na de levensduur van de uitvoering van het huidige blok (waarbij een copy-on-return zou ook duur zijn), of als je moet geheugen toewijzen groter is dan de grootte van die stapel (dwz: een lokale stapelarray van 3 MB is een slecht idee).

Moet je ook in C++ mallocen?

Het verschil is simpel: malloc wijst geheugen toe, terwijl nieuw geheugen toewijst EN de constructor van het object aanroept jij bent het toewijzen van geheugen voor. Dus, tenzij jij zijn beperkt tot C, je zou moeten nooit gebruiken malloc , vooral als het gaat om C++ voorwerpen.

Men kan zich ook afvragen, wat is het nut van malloc? In C, de bibliotheekfunctie malloc wordt gebruikt om een geheugenblok op de heap toe te wijzen. Het programma benadert dit geheugenblok via een aanwijzer die: malloc geeft terug. Wanneer het geheugen niet langer nodig is, wordt de aanwijzer doorgegeven aan vrij die het geheugen vrijgeeft zodat het voor andere doeleinden kan worden gebruikt.

Is er op deze manier malloc in C ++?

de malloc () functie in C++ wijst toe een blok van niet-geïnitialiseerd geheugen en returns een lege aanwijzer naar de eerste byte van de toegewezen geheugenblok als de toewijzing lukt. Indien de grootte is nul, de geretourneerde waarde is afhankelijk van: de invoer van de bibliotheek. Het misschien wel of niet een nul punten.

Hoe malloceer je een structuur?

Voor wat je wilt heb je er wel twee nodig malloc () s. structureren Vector *y = malloc (grootte van *y); /* Let op de aanwijzer */ y->x = calloc(10, sizeof *y->x); In de eerste regel wijst u geheugen toe aan een Vector-object. malloc () retourneert een aanwijzer naar het toegewezen geheugen, dus y moet een vectoraanwijzer zijn.