我应该在什么情况下使用malloc?我很困惑应该在C中使用动态分配

use*_*204 0 c malloc dynamic-memory-allocation

如果我想创建一个2D数组,用户输入指定维度,我不能只在主函数中按顺序执行此操作吗?一旦我使用scanf获得尺寸,然后我创建一个具有这些尺寸的数组?根据我的理解,当运行时不知道所需的空间时,应该使用malloc.我不知道运行时所需的空间,但我没有动态分配内存,无论如何它都会工作,对吧?也许我完全误解了一些东西.

orl*_*rlp 6

通常在C中使用动态分配有三种方法:

  1. 直到运行时才知道大小(另一种选择是VLA,但那是C99并且有潜在危险,见原因2).

  2. 大小(很可能)对于堆栈来说太大了,冒着堆栈溢出的风险.

  3. 对象需要在堆上生存,使其比"自动"存储更长寿命.