[C] Problema allocazione memoria

di Paolovox il
4 risposte
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

  • Da quanto usi il C?

    Le stringhe non si assegnano con =

    Devi usare la funzione strcpy
  • 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.
  • 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).
  • Certo grazie.
Devi accedere o registrarti per scrivere nel forum
4 risposte