Salve a tutti.
Ieri mi sono imbattuto in uno strano errore mentre cercavo di fare la seguente operazione:
dato un array di 5 interi, diciamo questo:
vorrei compiere la seguente operazione: spostarmi in avanti, e mettere il primo valore in fondo.codice:int i = 0, length = 5, *array = malloc(length * sizeof(int)); while(i < length) array[i] = i++;
Da una coppia index/valori come questa:
vorrei ottenere questacodice:0,1,2,3,4 0,1,2,3,4
Il codice che ho utilizzato e' il seguente:codice:0,1,2,3,4 1,2,3,4,0
Il suddetto codice funziona perfettamente, ma solo fino a tot numeri.codice:int j = array[0]; ++array; // o array++ array[length - 1] = j;
Se l'array e' composto da 50 elementi, ad un certo punto il programma termina (a volte anche no) senza errori o altro.
Non ricordando bene il C, ma ragionandoci sopra, ho dedotto il problema fosse della memoria allocata e relativo indirizzo, dove spostando il puntatore mi muovo verso il limite della memoria allocata, e quando il loop ripete se stesso dopo essere giunto alla fine degli spostamenti, si crea il problema.
Convinto di questo, ho provato a riutilizzare sia realloc, che malloc, ma ho sia comportamenti anomali, ad esempio se uso altri puntatori / array che impazziscono se dichiarati dopo quello sulla quale opero, che errori di sistema di ogni tipo.
Alche', non avendo trovato molto in rete, mi fermo e chiedo a voi che C lo usate tutti i giorni, a differenza di me che l'ho dimenticato al 99%
Grazie per ogni eventuale consiglio![]()