Segnali e Crash a Runtime
Segmentation fault: attempting to write to read-only string literal ('char *s = "hello"; s[0] = 'H';') – C STRING_LITERAL_MODIFY
Le stringhe letterali tra virgolette sono memorizzate nella sezione di memoria '.rodata' (sola lettura); tentare di modificarne un carattere tramite un puntatore genera una violazione di accesso immediata.
Cosa significa questo errore?
Le stringhe letterali tra virgolette sono memorizzate nella sezione di memoria '.rodata' (sola lettura); tentare di modificarne un carattere tramite un puntatore genera una violazione di accesso immediata.
Messaggio originale
Segmentation fault: attempting to write to read-only string literal ('char *s = "hello"; s[0] = 'H';')Contesto e parole chiave
Alias
- modifying string literal causes segfault C
Messaggi alternativi
- modifica di stringa letterale in sola lettura
Prodotti
- GCC / Clang / MSVC / GDB
Piattaforme
- Linux
- macOS
- Windows
Parole chiave
- c.runtime.string-literal-modification-sigsegv
- errore-c-string-literal-modification-sigsegv
- linguaggio-c
- Segnali e Crash a Runtime
Cause possibili
Causa tecnica per Errore C: Modifica di Stringa Letterale in Sola Lettura (SIGSEGV)
Le stringhe letterali tra virgolette sono memorizzate nella sezione di memoria '.rodata' (sola lettura); tentare di modificarne un carattere tramite un puntatore genera una violazione di accesso immediata.
molto comuneDiagnosi
Diagnostica di compilazione o memoria per Errore C: Modifica di Stringa Letterale in Sola Lettura (SIGSEGV)
Compilare con flag di warning rigorosi (-Wall -Wextra -pedantic) e analizzare eventuali crash con AddressSanitizer o GDB.
Come leggere il risultato. Evidenzia warning precisi a tempo di compilazione ed esegue l'intercettazione dei memory error a runtime.
gcc -Wall -Wextra -pedantic -fsanitize=address -g main.c -o appRisoluzione
Risoluzione standard per Errore C: Modifica di Stringa Letterale in Sola Lettura (SIGSEGV)
Applicare la correzione al codice sorgente C secondo le buone pratiche di gestione memoria e prototipi.
- Ispezionare la riga segnalata dal compilatore o l'indirizzo del crash
- Correggere la gestione dei puntatori, firme delle funzioni o flag del linker
- Ricompilare e verificare l'assenza di memory leak con Valgrind o ASan
gcc -Wall -Wextra main.c -o appDomande frequenti
Come risolvere l'errore Errore C: Modifica di Stringa Letterale in Sola Lettura (SIGSEGV) in C?
Le stringhe letterali tra virgolette sono memorizzate nella sezione di memoria '.rodata' (sola lettura); tentare di modificarne un carattere tramite un puntatore genera una violazione di accesso immediata.
Approfondimenti
- ISO/IEC C Standard / GCC Documentation documentazione_ufficiale