gpt4 book ai didi

c - c 中的 memcpy 和 free

转载 作者:行者123 更新时间:2023-12-02 17:50:37 24 4
gpt4 key购买 nike

psApdu->prgbCData = (byte_t*)malloc(APDU_BUFFER_LENGTH);
memset((void*)psApdu->prgbCData, 0, APDU_BUFFER_LENGTH);

byte_t prgData[] = { 0x01, 0x38, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02 };
memcpy((byte*)psApdu->prgbCData, prgData, sizeof(prgData));

free(psApdu->prgbCData);

'free' 声明在这里失败。这是什么原因?

最佳答案

首先,你不应该在 void * 之间转换.还有 sizeof是运算符。

您需要检查 sizeof prgData <= APDU_BUFFER_LENGTH .您可以尝试使用静态断言:

psApdu->prgbCData = malloc(APDU_BUFFER_LENGTH);
memset(psApdu->prgbCData, 0, APDU_BUFFER_LENGTH);

byte_t prgData[] = { 0x01, 0x38, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02 };
_Static_assert(sizeof prgData <= APDU_BUFFER_LENGTH, "too big");
memcpy(psApdu->prgbCData, prgData, sizeof prgData);

free(psApdu->prgbCData);

关于c - c 中的 memcpy 和 free,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com