Freaxxx
15-09-2011, 21:36
#include <stdio.h>
int main(){
int i=0;
*&i=5;
printf("\n%d",i);
}
parlando dello standard C ( C99 magari ), viene definito cosa accade nel dettaglio? Mi spiego meglio:
mi viene allocata una variabile di tipo int nominata i
alla seconda riga, seguendo la precedenza degli operatori, viene eseguito quanto segue:
l'operatore & mi genera un puntatore ad i
il puntatore viene deferenziato
il contenuto della variabile puntata viene posto a 5
ora la mia domanda: dove viene allocato il puntatore e che etichetta/nome ha? si può allocare una variabile senza darle un nome ( parlando sia dello stack che dell'heap ) ?
Parlando di calcolo parallelo, se la macchina incontrasse 2 istruzioni con lo stesso scopo come i=5 e *&i=5, si creerebbero problemi di concorrenza all'accesso del dato, giusto?
I sistemi operativi hanno policy chiare sul tetto massimo di byte che un programma/processo può allocare? esiste un algoritmo che dia la quantità del massimo allocabile?
int main(){
int i=0;
*&i=5;
printf("\n%d",i);
}
parlando dello standard C ( C99 magari ), viene definito cosa accade nel dettaglio? Mi spiego meglio:
mi viene allocata una variabile di tipo int nominata i
alla seconda riga, seguendo la precedenza degli operatori, viene eseguito quanto segue:
l'operatore & mi genera un puntatore ad i
il puntatore viene deferenziato
il contenuto della variabile puntata viene posto a 5
ora la mia domanda: dove viene allocato il puntatore e che etichetta/nome ha? si può allocare una variabile senza darle un nome ( parlando sia dello stack che dell'heap ) ?
Parlando di calcolo parallelo, se la macchina incontrasse 2 istruzioni con lo stesso scopo come i=5 e *&i=5, si creerebbero problemi di concorrenza all'accesso del dato, giusto?
I sistemi operativi hanno policy chiare sul tetto massimo di byte che un programma/processo può allocare? esiste un algoritmo che dia la quantità del massimo allocabile?