【问题标题】:Using memcpy() on a char **buffer在 char **缓冲区上使用 memcpy()
【发布时间】:2013-11-16 00:22:05
【问题描述】:

如果我有一个指向消息缓冲区的指针,我如何将 memcpy() 放入该缓冲区?例如说我有以下内容:

char **buffer;
char data[10]

memcpy(*buffer, data, 10);

但这似乎不起作用并且总是使我的程序崩溃,但是编译器并不介意。有人可以告诉我为什么吗?顺便说一句,我有一个 char **buffer 的原因是因为它被作为函数的参数传递。

【问题讨论】:

  • 在写内存之前,需要先分配。也没有什么可以阻止您将 char * 传递给函数..
  • buffer 点未指定,*buffer 点未指定。写入未知是未定义的行为。

标签: c memcpy


【解决方案1】:

指针变量buffer 没有指向任何东西。您需要分配内存并使buffer 指向它。例如:

buffer = malloc(sizeof(*buffer));
*buffer = malloc(10);
memcpy(*buffer, data, 10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 2012-05-27
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    相关资源
    最近更新 更多