2015-03-02 21 views
6

Mi piacerebbe vedere come l'array C# viene posto nella memoria del computer.come vedere come viene depositato un array C# in memoria?

Quello che mi piacerebbe vedere sono principalmente due colonne una con indirizzi seconda con elementi di matrice. È possibile?

Mi piacerebbe iniziare con un array 1D ma poi mi piacerebbe osservare come vengono disposti gli array multidimensionali.

Domanda

Come posso vederla tramite VisualStudio?

+0

Il modo in cui vengono memorizzate le cose in .NET è un dettaglio di implementazione, ovvero è possibile trovare una differenza tra CLR e Mono o anche tra versioni diverse di esse. Probabilmente no, ma è possibile. Come sviluppatore .NET, in genere non devi preoccuparti di nessuno - per quale motivo stai cercando di scoprirlo? –

+2

Perché questa domanda è stata chiusa? è una domanda che ogni sviluppatore .net deve conoscere –

+0

Sono interessato alla manipolazione su array multidimensionali. Questa domanda è solo per sapere come controllare le basi, prima di immergermi in matrici multidimensionali. Non riesco a pensare a una migliore/più semplice riformulazione di questa domanda. Grazie Hans per la risposta molto buona. – user1146081

risposta

14

È possibile utilizzare il debugger di Visual Studio per visualizzare il layout dell'array. Un semplice esempio:

static void Main(string[] args) { 
     int[] arr = { 1, 2, 3 }; 
     Console.ReadLine(); // Breakpoint here 
    } 

Utilizzare Progetto + Proprietà, scheda Crea, Piattaforma target = x86. Impostare un punto di interruzione sulla linea indicata, premere F5, quando si preme usare Debug + Windows + memoria + memoria 1. Digitare arr nella casella Indirizzo. Fare clic con il tasto destro del mouse sulla finestra e selezionare "Intero a 4 byte". Si presenta così:

enter image description here

La prima parola è il "tipo di maniglia", il suo valore è casuale, semplicemente ignorarlo. Indubbiamente puoi indovinare il resto, vedi la lunghezza dell'array e gli elementi dell'array.

+0

Hans, un commentatore nella domanda originale ha detto: "Come vengono messe in memoria le cose in .NET, è un dettaglio di implementazione_", Significa che un array _can_ può essere memorizzato in una memoria NON-sequenziale? –

+2

Hmm, è un "dettaglio di implementazione" quando non si sa come è implementato. Gli elementi dell'array sono sempre memorizzati sequenzialmente. –

0

È possibile utilizzare WinDbg con estensioni sos o psscor.

Problemi correlati