gpt4 book ai didi

c - 如何在这两个函数上分配内存

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:40 25 4
gpt4 key购买 nike

char* bit_encrypt(const unsigned char* text) 

unsigned char* bit_decrypt(const char* text)

你好,我如何为这两种无符号函数分配内存和返回值?当我尝试在第一个函数中进行分配时出现此错误

error: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Werror=pointer-sign]

unsigned char* binary = (unsigned char*)malloc((strlen(text) + 1) * sizeof(char));

如何摆脱这个错误?

最佳答案

您只需将 unsigned char* 转换为 char*。像这样:

unsigned char* binary = (unsigned char*)malloc(strlen((char*)text) + 1);

您不必像以前那样强制转换 malloc 结果。这是不必要的,因为在这种情况下 void * 会自动且安全地提升为任何其他指针类型。而且它增加了代码的困惑,转换不是很容易阅读(特别是如果指针类型很长,比如 unsigned char)。

正如 Basile Starynkevitch 所建议的,您不必乘以 sizeof(char)。最后,代码将如下所示:

unsigned char* binary = malloc(strlen((char*)text) + 1);

关于c - 如何在这两个函数上分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455057/

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