int someInts [3]和int*someInts = new int [3]之间的区别?

0 c++ arrays pointers declaration

使用int someInts[3]和使用声明一个新的整数数组有什么区别int* someInts = new int[3]

MBy*_*ByD 6

有两个主要区别:

  1. 第一个将在堆栈上分配一个内存,一旦函数返回,它将不可用.
    第二个将在freestore上分配一个内存,该内存在删除之前可用.

  2. 第一个someInts是一个int数组,你不能为它分配新的地址.
    第二个是指向int的指针,因此您可以为其分配新地址.

  • 根据您的观点,区分"堆栈"和"堆"可能没有帮助,因为这些不是C++语言所关注的概念. (2认同)