[C] Problema allocazione memoria

di il
4 risposte

[C] Problema allocazione memoria

Il mio problema è il seguente.
Ho un nuovo tipo:

typedef struct {
  char name[100];
  char *command;
}Command;
Adesso voglio istanziarne uno:

Command hello;
hello.name = "Hello";
hello.command = (char *)malloc(512*sizeof(char));
hello.command = "printf(\"Hello\")";
Non capisco perchè mi dà errore hello.name!!!
Cosa succede in memoria? Command hello, riserva lo spazio nello stack per una variabile di tipo Command con 100 bytes per name e spazio per un puntatore all'array di char command. Cosa sbaglio?

Grazie e buona giornata.

4 Risposte

  • Re: [C] Problema allocazione memoria

    Da quanto usi il C?

    Le stringhe non si assegnano con =

    Devi usare la funzione strcpy
  • Re: [C] Problema allocazione memoria

    L'anno scorso ho fatto l'esame di OS e poi non l'ho più toccato. Mi tocca rileggere tutto.
    E' preferibile
    *strncpy(char *dest, const char *src, size_t n);
    per evitare Buffer Overflow.

    Grazie per l'n-esima volta.
  • Re: [C] Problema allocazione memoria

    Se parliamo di un esercizio da poche righe, se usi la strcpy va comunque bene ...

    Se stai scrivendo qualcosa di più "impegnativo" allora fai attenzione a questi aspetti usando la strncpy o la strcpy_s (ovvero tutte le versioni "sicure" delle funzioni di gestione di buffer).
  • Re: [C] Problema allocazione memoria

    Certo grazie.
Devi accedere o registrarti per scrivere nel forum
4 risposte