Articles of mémoire gestion

Fuite de mémoire subtile, et est-ce une pratique courante?

Je pense que je pourrais créer une fuite de mémoire ici: void commandoptions(){ cout<>input; if (input==1) buy(); //Continue the list of options….. else commandoptions(); //MEMORY LEAK IF YOU DELETE THE ELSE STATEMENTS! } inline void buy(){ //buy something commandoptions(); } Disons que commandoptions vient d’exécuter pour la première fois le programme exécuté. L’utilisateur sélectionne ‘1’, […]

Comment libérer un tableau en C / C ++

int main() { // Will this code cause memory leak? // Do I need to call the free operator? // Do I need to call delete? int arr[3] = {2, 2, 3}; return 0; } Ce code crée-t-il une fuite de mémoire? Où réside arr ? Sur la stack ou en RAM?

conditions malloc pour échec

Je bosse sur c, refait des exercices anciens et obtiens des résultats inhabituels lorsque je lance cet extrait (je connais ses fuites mais je veux savoir ce que le système permet.) #include #include int main(int argc,char *argv[]) { void *page = 0; int index; index = 0; while(1) { page = malloc(1073741824); //1GB if(!page)break; ++index; […]

Libérer de la mémoire dans l’appelant ou l’appelé?

Une fonction (Say “fun ()”) alloue de la mémoire et renvoie le pointeur sur la mémoire allouée. Comment dois-je m’assurer que cette mémoire est libérée. Je ne peux pas le libérer immédiatement dans la fonction “fun ()” car il est renvoyé à l’appelant. Et si fun () fait partie de la bibliothèque? Dont la responsabilité […]

Pourquoi mstats et malloc_zone_statistics ne montrent-ils pas la mémoire récupérée après libération?

J’essaie d’écrire des tests unitaires qui vérifient si la mémoire a été libérée – pour vérifier les memory leaks – sous OS X (10.9 Mavericks). J’essaie d’utiliser mstats () et malloc_zone_statistics () pour découvrir les informations dont j’ai besoin. Mais il semble qu’ils ne montrent pas que la mémoire est libérée (voir l’exemple de sortie […]

Ce code C ++ provoquera-t-il une fuite de mémoire (casting array new)?

Je travaille sur du code C ++ hérité qui utilise des structures à longueur variable (TAPI), dans lesquelles la taille de la structure dépend de chaînes de longueur variable. Les structures sont allouées par casting new tableau ainsi: STRUCT* pStruct = (STRUCT*)new BYTE [sizeof(STRUCT) + nPaddingSize]; Cependant, la mémoire est libérée ultérieurement à l’aide d’un […]

Stratégies générales pour les problèmes de mémoire / vitesse

J’ai un code c ++ qui parcourt environ 200 fichiers ASCII, effectue un traitement de base des données et génère un seul fichier ASCII avec (essentiellement) toutes les données. Le programme fonctionne très vite au début, puis ralentit considérablement en cours de route, peut-être un peu plus lentement, puis avance à un rythme relativement lent. […]

Les littéraux de chaîne à l’intérieur des fonctions: variables automatiques ou allouées dans le tas?

Les littéraux de chaîne que nous utilisons dans les fonctions internes sont-ils des variables automatiques? Ou sont-ils alloués en tas que nous devons libérer manuellement? J’ai une situation similaire au code ci-dessous, dans laquelle j’affecte un littéral chaîne à un champ privé de la classe (marqué comme “UN” dans le code) et le récupère beaucoup […]

Comment connaître la quantité de mémoire utilisée par mon application c ++ sur le Mac

Certaines opérations de mon application utilisent plus de mémoire que je ne le pense, et je voudrais consigner l’utilisation actuelle de la mémoire pour identifier celle-ci. Existe-t-il un appel système qui renvoie la quantité de mémoire actuellement utilisée?

L’utilisation de delete avec un pointeur de classe de base provoquera-t-elle une fuite de mémoire?

Deux classes ayant uniquement un type de données primitif et aucun destructeur / désallocateur personnalisé. Est-ce que les spécifications C ++ garantissent qu’il sera désalloué avec une taille correcte? struct A { int foo; }; struct B: public A { int bar[100000]; }; A *a = (A*)new B; delete a; Je veux savoir si j’ai […]