Kako je moguce da sa 1 bytom alocirane memorije mogu da da pravim 2-matrice a da ne izbacuje nikakvu gresku(pogledajte kod i sve radi ali kako?).Mali Misha mi je pomogao sa alociranjem memorije za pokazivace ali meni je pala na um druga ideja koja radi za sad.Ipak me interesuje kako je moguce da program moze da radi(da ne puca) ako mu se alocirana memorija ne prosiruje.
evo pogledajte dio koda
Evo ga citav kod.
evo pogledajte dio koda
Code:
//part je definisan kao char **part;
part = (char**)malloc(sizeof(char*)); //ovdje sam alocirao 1 bajt
while(1)
{
j = 0;
z = 0;
memset(buffer,0,512);
valid=frecv(sock,buffer,sizeof(buffer),0);
printf("%s [=-=]\n",buffer);
if (valid<=0) break;
for(i = 0;i < valid;i++)
if(buffer[i] == '\r'||(buffer[i] == ':' && i > 0))
fstrcpy(&buffer[i],&buffer[i+1]);
for(i = 0;i < valid;i++)
{
if(buffer[i] == ' ' ||
buffer[i] == '\n')
{
// part = (char**)realloc(part,(j+1) * sizeof(char*)); kad ovo nestavim u kod
// program opet radi
buffer[i] = '\0';
part[j] = &buffer[z+1]; //ovdje stavljam u part[j] pokazivac od buffer
printf("part[%d] - %s\n",j,part[j]);
z = i;
j++;
}
}
if(strlen(sbuff) > 5)
{
fsend(sock,sbuff,sizeof(sbuff),0);
memset(sbuff,'\0',512);
}
}
free(part);
//part je definisan kao char **part;
part = (char**)malloc(sizeof(char*)); //ovdje sam alocirao 1 bajt
while(1)
{
j = 0;
z = 0;
memset(buffer,0,512);
valid=frecv(sock,buffer,sizeof(buffer),0);
printf("%s [=-=]\n",buffer);
if (valid<=0) break;
for(i = 0;i < valid;i++)
if(buffer[i] == '\r'||(buffer[i] == ':' && i > 0))
fstrcpy(&buffer[i],&buffer[i+1]);
for(i = 0;i < valid;i++)
{
if(buffer[i] == ' ' ||
buffer[i] == '\n')
{
// part = (char**)realloc(part,(j+1) * sizeof(char*)); kad ovo nestavim u kod
// program opet radi
buffer[i] = '\0';
part[j] = &buffer[z+1]; //ovdje stavljam u part[j] pokazivac od buffer
printf("part[%d] - %s\n",j,part[j]);
z = i;
j++;
}
}
if(strlen(sbuff) > 5)
{
fsend(sock,sbuff,sizeof(sbuff),0);
memset(sbuff,'\0',512);
}
}
free(part);
Evo ga citav kod.