Ciao a tutti, devo ingrandire la grandezza di un buffer, perchè la grandezza finale mi è impossibile a sapere in fase di compilazione, io ho risolto cosi :
codice:
#include <stdio.h> 
#include <string.h> 
#include <malloc.h> 

#define BLOCK 64

int allunga ( char ** buffer, int size, int new_size) { 
	
	char *buffer_tmp = (char *)malloc(size); 
	//controlli 
	strncpy(buffer_tmp, *buffer, size); // salvo il vecchio buffer 
	free(*buffer); 
	*buffer = (char *)malloc( new_size); 
	strncpy(*buffer, buffer_tmp, size); 
	free(buffer_tmp); 
}


int main()  { 
	
	char * prova = (char *) malloc(BLOCK); 
	int i = 0; 
	
	for (i = 0; i < BLOCK; i++)  
		*(prova+i) = 'a'; 
	printf("SIZEOF : %d, STRLEN %d\n", sizeof(prova), strlen(prova)); 
	puts(prova); 
	allunga(&prova, BLOCK, 2*BLOCK); 
	printf("SIZEOF : %d, STRLEN %d\n", sizeof(prova), strlen(prova));
	puts(prova); 
	strcat(prova,"PPPPPPPPPPPPPPP");
	printf("SIZEOF : %d, STRLEN %d\n", sizeof(prova), strlen(prova));
	puts(prova); 

	return 0; 
}
Potrebbe essere una soluzione valida??
E poi esiste un modo per vedere quanta memoria è occupata da vettore allocato con mallloc? O provato ad usare anche calloc ma non cambia nulla...