valore di ritorno di un malloc () per un tipo di struttura

#include<stdio.h>

struct student

{

  int roll_no;

  int mark;

  struct student *p;

} ;

int main()

{

  struct student *stu;

  stu=malloc(sizeof(struct student));

}

qual è il valore effettivo ritorno di un malloc() per un

tipo di struttura? come viene assegnato al

variabile di struttura?

ora per la dichiarazione,

Struct student *stu;

allocazione della memoria è così

roll_no: 1000 - 1004

mark: 1004 - 1008

p: 1008 - 1012

e per la dichiarazione

stu=malloc(sizeof(struct student));

le mie ipotesi sono come segue

primo alloca blocco di memoria

diciamo solo 2000 - 2012

poi la parte di assegnazione

2000 stored at 1000

2004 stored at 1004

2008 stored at 1008

è così che funziona la parte di assegnazione per malloc()

e la struttura variabile o abbiamo

ipotesi.


En title : Return value of an malloc() for a structure type

8 Comments:

  1. malloc() restituisce un puntatore ad un blocco di memoria (void *) abbastanza grande da contenere size (primo argomento) byte indipendentemente da cosa sia l'argomento o a quale risultato si stia avviando.

    per esempio, stu->roll_no avrebbe accesso ai primi due byte (assumendo che int sia a 32 bit) della memoria allocata (assumendo che la struttura non sia imbottita).

    in C, i puntatori void * sono implicitamente convertiti nel tipo di puntatore a cui sono assegnati.

    1. si prega di apportare correzioni se c'è qualche errore nella mia comprensione,
    1. @PraveenKumarKarthikeyan Quello che avete è relativamente corretto per i sistemi a 32 bit. sui sistemi a 64 bit (i puntatori al giorno d'oggi) sono solitamente lunghi 8 byte.
    1. commento sezione non era sufficiente, quindi ho messo il mio chiarimento nella sezione risposta. per favore date un'occhiata.
    1. @PraveenKumarKarthikeyan Le risposte non sono destinate ad essere estensioni di domande; se avete un'altra domanda, creare una nuova.
    1. che aint un'altra domanda, Ho appena messo la mia comprensione lì che è po 'più lunghe per essere ospitati nella sezione commenti. per favore date un'occhiata. e grazie mille per il vostro tempo prezioso
    1. ho provato come da vostra spiegazione, vorrei sottolineare w.r.t gli indirizzi di memoria, stu è assegnato con 2000 (indirizzo iniziale di BOM) come può il compilatore capire quando diciamo stu- > roll _ no 1st 4 bytes deve essere accessibile, allo stesso modo stu- > mark prossimi 4 byte sono accessibili. non è come quando si parla di stu- > mark è equivalente a (stu + 1) puntatore aritmetica.
  2. prego fare le correzioni se ci è qualunque errore nella mia comprensione, in modo da per la dichiarazione, allievo della struttura * stu; 4 byte di spazio di memoria è assegnato per la dichiarazione seguente stu = malloc (sizeof (allievo della struttura)); il primo blocco di memoria è assegnato appena diciamo che alcuni 12 byte sono assegnati e l'indirizzo iniziale a quel blocco è assegnato a stu. quindi se diciamo stu- > roll _ no i primi 4 byte sono acceduti e se diciamo stu- > i contrassegni i 4 byte successivi saranno acceduti. e se diciamo stu- > p si accede ai prossimi 4 byte. e per chiarezza, diverso di una variabile normale della struttura che assegnerà 12 byte per lo studente della struttura mentre una variabile del puntatore della struttura alloca appena 4 byte.

More similar articles:

  • segmentation fault nell'assegnare valore ad un array dinamico di nodi, all'interno di una struttura
  • struttura di ritorno dalla funzione (C)
  • assegnare un valore ad un array 2-d in una struttura è segfaulting
  • l'aggiornamento del valore di una variabile in una struttura comporta la modifica di un'altra variabile della stessa struttura
  • problemi di struttura del tipo malloc
  • il programma C si arresta quando ho provato a regolare un elemento di tipo char * nella mia struttura ad una stringa specifica?
  • array in espansione dinamica della struttura
  • uso malloc con struttura
  • array malloc della struttura in C
  • assegnazione di indirizzi di memoria sequenziali per array nella struttura in C
  • fscanf in una struttura che ha una stringa
  • semplicemente creando una struttura dati, come può segfault?
  • problema di inizializzazione della struttura?
  • come dimensionare dinamicamente una matrice di struttura in C
  • array all'interno di una struttura di essere mallocato
  • i membri della struttura continua a stampare quando non è chiamato
  • liberare la struttura delle strutture che sono state assegnate da malloc causa errore?
  • array malloc di strutture in una struttura
  • allocare dinamicamente un puntatore * * in una struttura
  • memoria libera dalla struttura dati
  • come allocare una struttura della struttura?
  • funzione per liberare una struttura in C
  • creare istanza statica della struttura in C senza conoscere l'implementazione della struttura
  • qual è il modo appropriato per allocare dinamicamente le proprietà della struttura?
  • allocazione della memoria della struttura e malloc () in c
  • creare struttura 2D
  • inizializza la struttura con malloc in C
  • struttura molto grande e ottenere segmentation fault
  • definizione di una struttura in C con malloc
  • dimensione non valida della struttura dopo realloc