|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
[C] domanda tecnica sulla gestione di variabili e allocazione di memoria
Codice:
#include <stdio.h> int main(){ int i=0; *&i=5; printf("\n%d",i); }
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? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Codice:
g++ test.cpp -S -O0 movl $0, 28(%esp) //int i = 0 movl $5, 28(%esp) //i = 5 movl 28(%esp), %eax //da qui in poi mette gli argomenti sullo stack e chiama printf. movl %eax, 4(%esp) movl $LC0, (%esp) call _printf |
![]() |
![]() |
![]() |
#3 | ||
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Quote:
![]() Poi non ricordo se le tabelle delle pagine dei processi impongano dei limiti più bassi...magari stasera provo a riguardare l'argomento e poi ti so dire. Quote:
Ma nel tuo caso, essendo le istruzioni identiche, non dovrebbero esservi di tali problemi. Certo, questo è un caso particolare!
__________________
Concluso con:... Ultima modifica di Floris : 19-09-2011 alle 16:59. |
||
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Su Unix/Linux (almeno per quanto ne so io, sicuramente un meccanismo parallelo esiste anche in casa MS) è possibile impostare dei limiti attraverso il comando ulimit e le chiamate getrlimit + setrlimit.
![]()
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:03.