Sei sulla pagina 1di 2

//la stringa NON DEVE essere deallocata

char* myString = "ciao";


La stringa "ciao" viene memorizzata in una zona di memoria costante che non potrà più essere deallocata.
#include <stdio.h>

int main(){

char* myString = (char*)"ciao";


printf("%s\n", myString); // Output: ciao

myString[0] = 'h'; // Modifica la stringa puntata da myString


printf("%s\n", myString); // Output: hiao

myString = (char *) "miao";


printf("%s\n", myString); // Output: hiao
return 0;
}

//la stringa NON DEVE essere deallocata ne modificata


const char* myString = "ciao";
Con il prefisso const la variabile myString diventa read-only
#include <stdio.h>

int main(){

const char* myString = (char*)"ciao";


printf("%s\n", myString); // Output: ciao

myString[0] = 'h';
printf("%s\n", myString); // Output: error: read-only variable is not assignable
return 0;
}

//vettore di char *
char* my_vector[] = {"ciao", “mondo”}; //è una matrice 2x6
char c = my_vector[0][2];
printf("%c\n", c); // Output: a
Prima seleziono la parola[0] e poi la lettera [2]

// la stringa DEVE essere deallocata

char* myString_Pointer;
myString_Pointer = (char*)malloc(5);
strcpy(myString_Pointer, "ciao");
free(myString_Pointer);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

int main(){
char* myString_Pointer;
myString_Pointer = (char*)malloc(5);
strcpy(myString_Pointer, "ciao");
printf("Memoria misurata: %lu byte\n", sizeof(char) * 5);
printf("Memoria allocata PRIMA: %d byte\n", mallinfo().uordblks);
free(myString_Pointer);
printf("Memoria allocata DOPO: %d byte\n", mallinfo().uordblks);
}

Questo metodo alloca la memoria per la stringa in modo dinamico, il che significa che la stringa può essere
deallocata in modo flessibile.

Potrebbero piacerti anche