Ciao a tutti, ho da poco iniziato a studiare il C per passione e devo dire che è abbastanza affascinante pensare cosa siano riusciti a fare considerando l'epoca.... comunque... mi trovo a scrivere qui perchè ho un dubbio( e vorrei una delucidazione) riguardo la gestione della memoria in c......
non flammatemi se scrivo quindi idiozie.... ma sono all'inizio
Mi è capitato fra i vari test, studiando, di lavorare con char ** (puntatore di puntatore tipo char, quindi array di stringhe) ed ho notato che se gli allocavo memoria dinamicamente con malloc in questo modo
#include <stdio.h>
#include <stdlib.h>
char **strings;
string = (char **)malloc (32 * (sizeof(char *));
poteva capitarmi di avere elementi dell'array già popolati senza che io li avessi manipolati (poteva capitare con valori sensati oppure no) e che quindi :
int getIndexByString(char **strings, int size, char *string2Find)
{
int i;
for (i=0;i<size;i++)
{
if (strings[i] != NULL)
{
if (strcmp(string2Find, strings[i]) == 0)
{
return i;
}
}
}
return -1;
}
questa funzione a volte funzionava ed a volte no in particolare "if (strings
!= NULL)".
ho risolto utilizzando calloc invece che malloc, che da quel che ho capito oltre che allocare la memoria richiesta l'azzera.
è normale oppure ho risolto per caso?
tnx.