关于指针数组的基础

fli*_*one 1 c arrays pointers

我试图struct some_struct在C中声明一个指针数组

我可不可以做:

some_struct* arr[10];
Run Code Online (Sandbox Code Playgroud)

代替:

some_struct** arr=(some_struct**)malloc(10*sizeof(some_struct*));
Run Code Online (Sandbox Code Playgroud)

有什么区别?

Mys*_*ial 5

  • 第一个将数组放在堆栈上.
  • 第二个在堆上分配它.

在第一种情况下,数组的生命周期只是定义它的范围.当它超出范围时,它将自动释放,因此您不必进行任何清理.

在第二种情况下,数组超出了声明指针的范围.因此,您需要free()稍后手动操作以避免内存泄漏.