如果您在函数中创建了一个原始类型的变量,如 int、char、float,您是在运行时还是在编译时创建了该变量?
如果您在函数内部创建了一个对象,您是在运行时还是在编译时创建了该对象?
如果您通过堆分配内存来创建对象,您是在运行时还是在编译时创建该对象?
什么是静态内存分配和动态内存分配?
如果您在函数中创建了一个原始类型的变量,如 int、char、float,您是在运行时还是在编译时创建了该变量?
如果您在函数内部创建了一个对象,您是在运行时还是在编译时创建了该对象?
如果您通过堆分配内存来创建对象,您是在运行时还是在编译时创建该对象?
什么是静态内存分配和动态内存分配?
如果您在函数内创建了一个原始类型的变量,例如 int、char、float。您是在运行时还是在编译时创建了该变量?
您在运行时创建变量,该变量在函数执行时创建,并在函数完成时销毁。
如果您在函数内部创建了一个对象。您是在运行时还是在编译时创建了该对象?
和上面一样。
如果您通过堆分配内存来创建对象。您是在运行时还是在编译时创建了该对象?
如果你在堆上创建一个对象,你实际上是在运行时分配内存并返回一个指向它的指针。使用此指针,您可以读取/写入此内存。
静态内存,是只能在运行时读取的内存。
动态内存分配,是指在堆上分配对象并通过指向内存的指针来改变它们。
不,const int a=42;
//a 是在编译时创建的,而不是在运行时创建的。
在 C++ 11 上
constexpr
告诉编译器这是一个编译时常量,未分配,在需要时按值使用并进行优化,涉及constexpr
和/或const
值的表达式在编译时计算。编译器可以这样做,但我认为甚至不需要constexpr
分配大对象。
const
如果没有使用指针,可以在需要时使用 value 来优化在编译时分配的
函数内部的全局变量和静态变量在编译时分配
函数内的变量通常被放入堆栈内存,与传递参数相同,但它们可以驻留在内存中(我猜编译器是免费的)
new
用运算符(或旧 C 风格)分配的东西malloc
将驻留在堆上,直到被释放