C数组malloc()VS {}
我知道结果
int *x = malloc(sizeof(int)*100);
和
int x[100];
是一样的,但第一个是分配堆内存,第二个是分配堆栈内存。
现在我需要创建一个巨大的数组(大约10000个元素,而不是模式),我认为malloc()更合适。
但是当我准备初始化阵列时,我面临一个问题。 我不能使用任何循环来初始化数组,我如何初始化使用malloc创建的数组,就像使用一样
int x[100] = {1,2,3,4,......,6,7,5};
当你说int a[] = { 1, 2, 3 };
,您正在使用初始化程序为数组a
提供初始数据(并推断其大小)。 这是C的语法的一部分。
当你说int * p = malloc(1000);
,您只需进行库调用并存储指针即可。 语言或库中没有提供该指针指向的内存的初始值的机制,也不需要该指针指向任何内容(可能为NULL
)。
你应该注意到数组不是指针,而指针也不是数组。 a
和p
是完全不同的动物,尽管事实上你可以说p[1] = a[1];
。
如果你不能用循环来初始化数组,你可以使用memset()
并且避开它。
如果数据没有改变,最好的方法是写
static const int x [100] = { 23, 12, 5, 7, ... };
没有代码。 没有时间需要初始化。 我已经看到了以这种方式初始化兆字节数据的代码,没有任何问题。
链接地址: http://www.djcxy.com/p/80439.html下一篇: Malloc vs custom allocator: Malloc has a lot of overhead. Why?