Opět Vás všechny zdravím. Chtěl bych se zeptat jak se správně alokuje paměť struktur a jejich kopírování, případně práce s pointery.
Můj případ:
typedef struct{
int id;
BOOL active;
char text1;
char text2;
char text3;
}Data;
int main(int argc, char *argv[]){
Data *data_old[10];
Data *data_new[10];
...
napl_struct(data_old);
...
napl_struct(data_new);
...
// nahrazení data_old strukturou data_new - problém:
memcpy(data_old,data_new,sizeof(Data)*10);
return 0;
}
void napl_struct(Data *data[]){
Data * temp_data = (Data*) malloc(sizeof(Data));
// cyklus:
// načtení dat ze souboru, vložení do temp_data
//alokace paměti:
data[file_count] = (Data*) malloc(sizeof(Data));
//zkopírování dat z temp_data do data[file_count], char pomocí strcpy
//konec cyklu
}
Zkoušel jsem i funkci memmove, ale program píše: *** buffer overflow detected ***
Problém bude v tom, že pole struktur deklaruji o velikost 10, ve skutečnosti je to ale maximální číslo a těch struktur může být různě, třeba 6, 7 ... Chybu mi to ale píše i když jsou obě pole struktur naplněný stejným počtem.
Blbě buď alokuji paměť nebo kopíruji data. Můžete někdo poradit? Díky.