Questions marquées «free»

17
Que se passe-t-il VRAIMENT lorsque vous ne libérez pas après malloc?
C'est quelque chose qui me dérange depuis des lustres maintenant. On nous enseigne tous à l'école (du moins, je l'étais) que vous DEVEZ libérer chaque pointeur qui est alloué. Je suis un peu curieux, cependant, au sujet du coût réel de ne pas libérer de mémoire. Dans certains cas évidents, …
538 c  malloc  free 

11
Comment free sait-il combien à libérer?
En programmation C, vous pouvez passer n'importe quel type de pointeur que vous aimez comme argument à libérer, comment connaît-il la taille de la mémoire allouée à libérer? Chaque fois que je passe un pointeur vers une fonction, je dois également passer la taille (c'est-à-dire qu'un tableau de 10 éléments …
385 c  size  pointers  free 

13
Comment fonctionnent malloc () et free ()?
Je veux savoir comment mallocet freetravailler. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Je serais vraiment reconnaissant si la …


10
Free (ptr) où ptr est NULL est-il corrompu?
Théoriquement, je peux dire que free(ptr); free(ptr); est une corruption de mémoire puisque nous libérons la mémoire qui a déjà été libérée. Mais si free(ptr); ptr=NULL; free(ptr); Comme le système d'exploitation se comportera d'une manière indéfinie, je ne peux pas obtenir une analyse théorique réelle de ce qui se passe. …

8
Comment détecter une erreur «double libre ou corruption»
Lorsque j'exécute mon programme (C ++), il se bloque avec cette erreur. * glibc détecté * ./load: double libre ou corruption (! prev): 0x0000000000c6ed50 *** Comment puis-je retrouver l'erreur? J'ai essayé d'utiliser les std::coutinstructions print ( ), sans succès. Pourrait gdbrendre cela plus facile?
92 c++  c  debugging  free 

3
Pourquoi convertir la valeur de retour de free en null?
Je lis un livre ( Programmation avec des fils POSIX de Butenhof, 1997) qui utilise C, et je suis tombé sur la ligne suivante: (void)free(data); Ici, dataest juste un pointeur vers une structure allouée, data = malloc(sizeof(my_struct_t)); Pourquoi le résultat freeest-il lancé void? D'après ma compréhension de C, cela ne …
82 c  casting  free  void  legacy-code 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.