Heim > Fragen und Antworten > Hauptteil
RT, wenn ich der auszugebenden Zeichenfolge mit char* direkt einen Wert zuweise und die Zeichenfolgenlänge direkt in RETURN_STRINGL fest codiere, wird das Ergebnis während der Ausführung ausgegeben, aber dann wird ein „Segmentierungsfehler, Kern wurde ausgegeben“ gemeldet Wenn Sie jedoch die offiziell empfohlene spprintf-Funktion verwenden, um einen Wert zuzuweisen und die Länge abzurufen, wird kein Fehler gemeldet.
PS: Wenn im Code im Bild der zweite Parameter von RETURN_STRINGL auf 2 geändert wird, wird derselbe Fehler gemeldet. Ich habe ihn auf 3 geändert, weil ich dachte, PHP würde am Ende die 0 einschließen, aber nachdem ich es versucht habe Ein paar Mal habe ich festgestellt, dass es hier nicht das Problem sein sollte
習慣沉默2017-06-05 11:09:02
RETURN_STRINGL返回的字符串,必须是PHP内存管理分配的内存,结束后会由PHP本身释放,spprintf就是使用的PHP内存管理。像这种情况,可以设置第三个参数为1,表示PHP自身分配相应内存拷贝一份字符串。