我正在尝试在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]
答案 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);