【发布时间】:2020-02-09 16:52:46
【问题描述】:
我的代码是这样的:
uint8_t* payload = (uint8_t*)malloc(payload_size);
uint8_t* payloads = (uint8_t*)malloc(payload_size * 100);
for(uint8_t i = 0; i < 100; i++ ){
create_payload(payload); //cannot modify
//myapproach
payloads[i] = payload;
}
这甚至没有编译。
我想将有效负载值存储到有效负载数组中,因为有效负载变量在每次迭代时都会被替换。
有没有简单的解决办法?
【问题讨论】:
-
payloads似乎是一个指针数组,所以你不需要uint8_t** payloads = (uint8_t**)malloc(payload_size * 100);吗?如果是这样,还有一个问题,payload只分配了一次,为什么? -
create_payload返回/接受什么?它的签名是什么样的? -
payloads[i] = *payload;您需要取消引用它,因为有效负载是一个指针,但您可能想要存储值,而不是指针。 -
你有一个指针
payload。您要存储该指针还是要存储它指向的值?如果要存储值,需要先解引用指针。 -
@Mattia 显示一个演示问题的最小完整程序。
标签: c memory-management malloc dynamic-memory-allocation