假設我分配了一些內存。將分配的內存視爲不同的類型
char* buffer = (char*)my_malloc(2062);
我將char值賦給前面定義的數組命名頭的前14個字節。
memcpy(buffer, header, 14);
然後我想把剩餘的分配空間當作指針來浮動。
float* float_buffer = (float*)(buffer + 14);
some_function(float_buffer);
然後在稍後的某個時刻我需要發送所有的數據。
transmit(buffer);
my_free(buffer);
這是治療記憶的正確方法嗎?浮球*投射好嗎?我遇到的問題是我正在失去價值,而沒有得到正確的結果。 我的問題是: 如果您必須將分配的內存視爲不同的類型,但在處理結束時將其作爲char *發送.....這是正確的方式嗎?
我檢查了ptr值,當它們是float *和char *時它們是相同的,但我沒有得到正確的結果。
我的一個限制是我最初只能從靜態緩衝區分配一塊內存。因此,不允許將另一個malloc作爲另一個類型(float *)調用。
這聽起來像你有一個對齊問題;你能展示預期的結果和你看到的實際錯誤嗎? – 2010-11-30 06:09:34
是的,這是一個對齊問題......我不知道的東西。我可以從這裏拿走它。謝謝。 – 2010-11-30 06:46:49