包含Memcpy错误

时间:2016-05-10 15:40:32

标签: c malloc

我正在尝试在Visual Studio 2013中运行该程序 无法识别malloc功能,如果不是cstring

,我不知道应该包含哪个标题
#include <cstring>

float x[4] = { 1, 1, 1, 1 };
float y[4] = { 2, 2, 2, 2 };

float* total = malloc(8 * sizeof(float)); // array to hold the result

memcpy(total,     x, 4 * sizeof(float)); // copy 4 floats from x to total[0]...total[3]
memcpy(total + 4, y, 4 * sizeof(float)); // copy 4 floats from y to total[4]...total[7]

2 个答案:

答案 0 :(得分:4)

memcpy函数在<string.h>中声明。

malloc函数在<stdlib.h>中声明。

您的系统 应该有一些文档告诉您,对于每个库函数,您需要#include使用哪个标头(以及您可能需要指定链接到哪个库)它)。 (如果您使用的是Unix或Linux,我建议使用手册页。)如果不这样做,网页搜索功能名称可能会给你提供信息(尽管还有很多那里的信息。)

对于MS Windows,MSDN有很多在线文档。例如,Google搜索&#34; MSDN malloc&#34;转而this page - 不幸的是,它还提到了非标准的<malloc.h>标题,但未明确表示它是非标准的。

网络搜索&#34; man malloc&#34;将为您提供可能更具特定于Unix的结果,但对于不应该成为问题的标准函数。

顺便说一句,<cstring>是一个C ++标题;它是C&#39; <string.h>的C ++版本。如果要编写C代码,请确保将编译器作为C编译器调用。 (用.c扩展名命名源文件有时候就足够了。)

答案 1 :(得分:1)

如果你是Google的标准库函数,通常可以找到一个页面,例如this,这将告诉你要包含哪个标题。

#include <string.h>

void *memcpy(void *dest, const void *src, size_t n);