Capire le perdite di memoria in c / c ++ [chiuso]
-
29-09-2020 - |
Domanda
Vuoi migliorare questa domanda? Aggiorna la domanda quindi è On-topic per lo scambio di pila di scienze informatiche.
chiuso 5 mesi fa .
Stavo guardando un esempio qui: https://blog.parasoft.com/finding-memory-leaks-in- c
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *string, *string_so_far;
int i, length; length = 0;
for(i=0; i<argc; i++) {
length += strlen(argv[i])+1;
string = malloc(length+1);
/* * Copy the string built so far. */
if(string_so_far != (char *)0)
strcpy(string, string_so_far);
else *string = '\0';
strcat(string, argv[i]);
if(i < argc-1) strcat(string, " ");
string_so_far = string;
}
printf("You entered: %s\n", string_so_far);
return (0);
}
.
e leggi che quando eseguiamo il programma con i seguenti argomenti:
hello this is a test
.
La variabile stringa_so_far punta alla stringa "Ciao" che è stata assegnata come risultato della precedente iterazione del loop. Ma non capisco come? Una spiegazione passo dopo passo sarebbe davvero utile.
In secondo luogo, mi sono imbattuto in questo esempio in materiale:
int countPrimes(int n)
{
PrimeSet *p = new PrimeSet(n);
return( p->countPrimeNumbers() );
}
.
È stato affermato che c'è una perdita di memoria qui ma non capisco davvero come, probabilmente perché non sono sicuro di cosa sta succedendo esattamente qui.