malloc有什么优势?

Lev*_* 31 2 c++ arrays malloc dynamic-allocation variable-length-array

为某些数据分配内存有什么好处.相反,我们可以使用它们的数组.

喜欢

 int *lis;
 lis = (int*) malloc ( sizeof( int ) * n );

 /* Initialize LIS values for all indexes */
 for ( i = 0; i < n; i++ )
 lis[i] = 1;
Run Code Online (Sandbox Code Playgroud)

我们可以使用普通的数组.

好吧,我不明白malloc是如何工作的,实际上是做什么的.所以解释它们对我来说会更有益.

假设我们sizeof(int) * nn用上面的代码替换然后尝试存储整数值,我可能面临哪些问题?有没有办法直接从内存分配空间打印存储在变量中的值,例如这里是lis

Lih*_*ihO 6

您的问题似乎是将动态分配的C风格数组与可变长度数组进行比较,这意味着您可能正在寻找:为什么变量长度数组不是C++标准的一部分?

然而,标签产生了最终的答案:改为使用std::vector对象.

只要有可能,避免动态分配和对丑陋的内存管理负责〜>尝试利用具有自动存储持续时间的对象.另一个有趣的读物可能是:理解术语和概念的含义 - RAII(资源获取是初始化)


"假设我们sizeof(int) * nn用上面的代码替换,然后尝试存储整数值,我可能面临哪些问题?"
- 如果您仍然认为n可以存储在此数组中的整数数量,您很可能会遇到未定义的行为.