我該如何做這種工作?如何從C中的「原始」內存讀取/寫入類型值?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
我該如何做這種工作?如何從C中的「原始」內存讀取/寫入類型值?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
簡單的例子:把內存爲unsigned char類型的數組
void *memory = malloc(1000); //allocate a pool of memory
uint8_t *ptr = memory+10;
*ptr = 1 //set an integer value at byte 10
uint8_t i = *ptr; //read an integer value from the 10th byte
您可以使用整數太大,但你一定要注意你在一次設置的字節數量。
因此,通過「工作」我假設你的意思是「我怎麼提領/上void*
執行指針運算」?你不能;如果你只關心閱讀大量的內存,你必須將它施放到char*
。當然,如果是這種情況,只需將其聲明爲char*
即可。
我對讀/寫任何類型的東西感興趣,不僅僅是字符。 – dtech 2012-07-15 10:01:19
@ddriver:沒有改變。你必須投射指針。當類型未知時,你會如何期待解引用和/或算術的行爲?這個不成立。您需要傳遞額外信息以瞭解底層類型。 – 2012-07-15 18:12:20
規則很簡單:
由此可以得出結論,如果要執行「原始」
是否有可能通過投射void指針而不是創建「中間」類型指針來實現此目的? – dtech 2012-07-15 10:07:26
當然,爲清晰起見,我使用中間表示法 – ziu 2012-07-15 10:08:34