Articles of mémoire

segment bss en c

Dans l’une des réponses à la question ” Concernant le segment bss et le segment de données sous Unix “, l’explication suivante figure sur bss: Bss est spécial: les objects .bss ne prennent pas d’espace dans le fichier d’object et, en regroupant tous les symboles qui ne sont pas spécifiquement initialisés ensemble, ils peuvent facilement […]

Pointeurs intelligents / gestion de la mémoire sécurisée pour C?

Je pense, comme beaucoup d’autres, que nous avons eu beaucoup de succès en utilisant des pointeurs intelligents pour résumer des opérations de mémoire non sécurisées en C ++, en utilisant des outils comme RAII, etc. Toutefois, la gestion de la mémoire d’encapsulation est plus facile à mettre en œuvre lorsque des destructeurs, des classes, une […]

Malloc vs allocateur personnalisé: Malloc a beaucoup de frais généraux. Pourquoi?

J’ai une application de compression d’image qui a maintenant deux versions différentes de systèmes d’allocation de mémoire. Dans l’original, malloc est utilisé partout et dans le second, j’ai implémenté un pool-allocateur simple, qui alloue simplement une partie de la mémoire et renvoie une partie de cette mémoire aux appels myalloc (). Nous avons constaté une […]

Un `char` aura-t-il toujours, toujours, toujours 8 bits?

J’ai toujours supposé: qu’un caractère est représenté par un octet, qu’un octet peut toujours compter sur 8 bits, que sizeof (char) est toujours 1 , et que la quantité théorique maximale de mémoire que je peux allouer (comptée en caractères) est le nombre d’octets de RAM (+ espace de permutation). Mais maintenant que j’ai lu […]

allocation / désallocation dynamic de tableaux 2D et 3D

Je connais les algorithmes pour allouer / désallouer un tableau 2D de manière dynamic, mais je ne suis pas sûr de la même chose pour les tableaux 3D. En utilisant cette connaissance et un peu de symésortinge, j’ai créé le code suivant. (J’ai eu du mal à visualiser en 3D lors du codage). Veuillez commenter […]

Renvoi de données locales à partir de fonctions en C et C ++ via un pointeur

Je me dispute avec mon ami. Il dit que je peux renvoyer un pointeur sur les données locales d’une fonction. Ce n’est pas ce que j’ai appris, mais je ne peux pas trouver un contre-argument pour lui de prouver mes connaissances. Voici le cas illustré: char *name() { char n[10] = “bodacydo!”; return n; } […]

Les décalages d’adresse sont-ils résolus pendant la compilation en C / C ++?

void *p = malloc(1000); *((int*)p) = 666; *((int*)p+sizeof(int)) = 777; int i; for (i = 0; i<10; ++i) printf("%d ", *((int*)p+sizeof(int)*i)); Le décalage manuel est-il en cours de résolution au moment de la compilation ou ajoute-t-il une surcharge liée à l’exécution d’opérations arithmétiques lors de l’exécution?

C realloc usage

J’essaye d’augmenter dynamicment la mémoire d’un tableau int , mais j’ai du mal à le faire fonctionner. Il ne s’agit pas d’élargir et d’append plus d’éléments au tableau, je ne suis pas sûr de ce que je fais mal. S’il vous plaît aider! int* fibs = NULL; void genFibs(){ int i = 1,curSize = 0,curNum […]

Utilisation de la mémoire d’un programme C sous Windows

Dupliquer possible: trouver la mémoire totale utilisée par le programme en c sous Windows Comment obtenir l’utilisation de la mémoire d’un programme en langage c sous Windows et la mettre dans un fichier de sortie (Contexte: je travaille sur la comparaison de deux langues sur des statistiques en implémentant des algorithmes de sorting.) Y a-t-il […]

C – le pointeur libéré n’a pas été atsortingbué

J’essaie de libérer un pointeur que j’ai affecté d’un vecteur alloué avec malloc() lorsque j’essaie de supprimer le premier élément (index [0]), cela fonctionne lorsque j’essaie de supprimer le second (index [1]) Je reçois cette erreur: malloc: *** error for object 0x100200218: pointer being freed was not allocated Le code: table->t = malloc (sizeof (entry) […]