Warum verursacht std::print Segfaults, wenn ein String-Parameter verwendet wird?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum verursacht std::print Segfaults, wenn ein String-Parameter verwendet wird?

Post by Anonymous »

Bedenken Sie den folgenden Code:

Code: Select all

#include

int main() {
std::println("hello from {}", "me");
return 0;
}
Auf x86-64 gibt dies „Hallo von mir“ aus. Aber auf ARM64 kommt es zu Fehlern.

ASM-Generierungs-Compiler hat zurückgegeben: 0

Ausführungs-Build-Compiler hat zurückgegeben: 0

Programm wurde zurückgegeben: 135

Programm wurde mit Signal beendet: SIGBUS

Wenn ich den String-Parameter dauerhaft mache, indem ich ihn in a einfüge constexpr, der gleiche Fehler tritt auf:

Code: Select all

#include

int main() {
static constexpr auto name = "me";
std::println("hello from {}", name);
return 0;
}
Ich verwende ARM64 gcc Trunk mit --std=c++23.
Der zu reproduzierende Godbolt-Link ist hier: https://godbolt.org/z/ss7xq87rG
Wie übergebe ich Strings als Parameter ohne Fehler an die Funktion std::print? Handelt es sich hierbei um ein undefiniertes Verhalten oder handelt es sich um einen Fehler in diesem speziellen Compiler?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post