[英]Unable to assign struct pointer to memory array
我試圖在 struct 中指向一個內存地址:
typedef struct {
uint32_t dataAddress;
} response_struct;
到一個初始化數組:
uint8_t *msg = NULL;
msg = malloc(sizeof(uint8_t)*LEN);
printf("Init: \n");
for (i=0; i<LEN; i++) {
msg[i] = i;
printf("%d ", msg[i]);
}
但是,在分配它后,它可以正確顯示其內容:
// case 1:
(response_struct_ptr->dataAddress) = (uint32_t) msg;
// or with case 2:
void assign_value_to_memory_address_given (uint8_t *msg, response_struct *response_struct_ptr) {
(response_struct_ptr->dataAddress) = (uint32_t) msg;
}
// e.g. assign_value_to_memory_address_given (msg, response_struct_ptr);
顯示器遇到分段錯誤(核心轉儲)
for (i=0; i < LEN; i++) // message fixed at length 10
printf(" %x", ((uint8_t*) response_struct_ptr->dataAddress)[i]);
printf("\n");
有人可以指出可能不正確的地方嗎? 謝謝。
該代碼可能適用於 32 位設備,但不適用於 64 位設備。
正如@melpomene 所建議的,如果您在 64 位平台上,因為指針不適合 32 位。 因此,可以通過更改類型來修復代碼:
typedef struct {
//uint32_t dataAddress;
uint8_t *dataAddress;
} response_struct;
並由@immibis 建議修復代碼行:
//(response_struct_ptr->dataAddress) = (uint32_t) msg;
(response_struct_ptr->dataAddress) = msg;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.