Angenommen, ich reserviere etwas Speicher.behandelt zugewiesenen Speicher als einen anderen Typ
Ich lege char Werte den ersten 14 Bytes aus einem zuvor definierten Array namens header.
memcpy(buffer, header, 14);
Dann möchte ich den Rest des zugewiesenen Speicherplatzes als Zeiger auf float behandeln.
float* float_buffer = (float*)(buffer + 14);
some_function(float_buffer);
Dann irgendwann später muss ich alle Daten senden.
transmit(buffer);
my_free(buffer);
Ist dies der richtige Weg, um Speicher zu behandeln? Ist der Float * in Ordnung? Ich habe Probleme, wo ich Werte verliere und nicht die richtigen Ergebnisse bekomme. Meine Frage ist: Wenn Sie zugewiesenen Speicher als verschiedene Typen behandeln müssen, aber dann senden Sie es als char * am Ende der Verarbeitung ..... ist dies der richtige Weg, es zu tun?
Ich habe die ptr-Werte überprüft und sie sind identisch, wenn sie float * und char * sind, aber ich bekomme nicht das richtige Ergebnis.
Eine meiner Einschränkungen ist, dass ich nur einen Speicherblock zunächst aus einem statischen Puffer reservieren kann. Daher ist es nicht erlaubt, ein anderes malloc als einen anderen Typ (float *) aufzurufen.
Es klingt für mich wie Sie ein Alignment-Problem haben; Können Sie die erwarteten Ergebnisse und die tatsächlichen Fehler anzeigen, die Sie sehen? –
Ja, es war ein Alignment-Problem ... etwas, das mir nicht bewusst war. Ich kann es von hier aus nehmen. Vielen Dank. –