代码之家  ›  专栏  ›  技术社区  ›  Nate

这是动态内存分配吗?

  •  1
  • Nate  · 技术社区  · 17 年前

    delete delete [] c ? 语言重要吗?

    char c[] = "hello"
    
    4 回复  |  直到 11 年前
        1
  •  12
  •   Greg Hewgill    17 年前

    在C++中,不是动态内存分配。不 delete[] 这是需要的。

    您的示例基本上是这方面的捷径:

    char c[6]={'h','e','l','l','o','\0'};
    
        2
  •  12
  •   Greg Hewgill    17 年前

    C++中的规则是你使用 delete[] 无论何时使用 new[] delete new 刚出现的 ,如您的示例所示,您不需要 删去 任何东西

    c 如果在函数中声明,则在堆栈上而不是在堆上分配数组。因为这些字节在堆栈上,所以一旦声明它们的函数返回,它们就会消失。

    如果该声明在任何函数之外,那么这六个字节将分配在全局数据区域中,并在程序的整个生命周期中保留。

        3
  •  2
  •   jdt141    17 年前

    在堆上放置某些内容时,可以动态分配内存。这里,您正在堆栈上分配变量。如果您使用的是新操作符或malloc调用,那么您将把变量放在堆上。

        4
  •  1
  •   Abtin Forouzandeh    17 年前

    不,数组是在编译时调整大小的。