c - 如何将 const unsigned char* payLoad 转换为 char* 并复制它?

标签 c malloc sizeof memcpy const-char

我正在尝试将 const unsigned char* 转换为 char* 并制作副本。我尝试了下面代码的几种变体,但通常会出现内存异常。该函数驻留在用 C 编写的应用程序中。

下面的函数是我正在尝试创建的

//global variable
char* copiedValue;

void convertUnsignedChar(const unsigned char* message){

    copiedValue = malloc(sizeof(message));
    (void)memcpy(copiedValue, message, sizeof(message));

}

最佳答案

您的问题的很大一部分是 sizeof(message),它为您提供了指针的大小,而不是它所指向的内容。

将长度传递给函数,或者(如果数据是空终止字符串)使用 strlen获取长度(但不要忘记为终止符添加一个!)或上述 strdup 函数(如果可用)。

关于c - 如何将 const unsigned char* payLoad 转换为 char* 并复制它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51624583/

相关文章:

c - free 不会删除分配给指针(int 数组)的内存,使用 free 两次有效,为什么?

c - 了解字符串指针数组

带有 jemalloc 的 C++ STL

c - 如何使用 malloc 在 ANSI - C 中声明动态整数数组并将输入整数放入其中?

c++ - 什么决定了 C 中整数的大小?

c - 并行编程=多子进程还是每个进程创建一个子进程?

c - 如何在c中递增数组

c - 段错误/malloc 错误?

c++ - 指向成员函数的指针的大小变化很大

c - 将原始结构内容(字节)写入 C 中的文件。对写入的实际大小感到困惑