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:
codice:
int i = 0,
length = 5,
*array = malloc(length * sizeof(int));
while(i < length)
array[i] = i++;
vorrei compiere la seguente operazione: spostarmi in avanti, e mettere il primo valore in fondo.
Da una coppia index/valori come questa:
codice:
0,1,2,3,4
0,1,2,3,4
vorrei ottenere questa
codice:
0,1,2,3,4
1,2,3,4,0
Il codice che ho utilizzato e' il seguente:
codice:
int j = array[0];
++array; // o array++
array[length - 1] = j;
Il suddetto codice funziona perfettamente, ma solo fino a tot numeri.
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