C语言 将分配的值存储到分配的数组



我有的代码是这样的:

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的指针,而不是uint8_t本身(因为您想在此数据上存储指针(

然后,您为每个有效负载创建使用相同的缓冲区,因此使用指向相同数据的指针填充有效负载,您需要为每个有效负载分配新的缓冲区

并且,最后 - 生成的缓冲区的大小将是

size of one entry *pointer* * count of entries

不是

size of one entry * count of entries

因此,生成的代码将是:


uint8_t** payloads = (uint8_t**)malloc(sizeof(uint8_t*) * 100);
// uint8_t* payloads[100]; - Will also work
for(uint8_t i = 0; i < 100; i++ ){
uint8_t* payload = (uint8_t*)malloc(payload_size);
create_payload(payload); //cannot modify 
payloads[i] = payload;
}

或者,如果您希望所有有效负载位于同一缓冲区中,请使用malloc将有效负载复制到输出:

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 
memcpy(payloads + i * payload_size, payload, payload_size);
}

创建一个uint8_t指针类型的数组:

uint8_t* payloads[100];

然后将该数组的一个元素设置为您拥有的有效负载指针:

payloads[i] = payload;
// make sure payload is of type uint8_t pointer

相关内容

  • 没有找到相关文章