php中的关键字new是否意味着在堆上分配内存? 离。
class person {
// properties and methods
}
$p1 = new person();
有没有办法用PHP在堆栈中创建对象?如c ++?
离。
class person {
// properties and methods
}
//inside in main stack
int main() {
person p1;
答案 0 :(得分:5)
在幕后,当您使用“new”关键字创建对象时,您将创建一个zval。用于在核心库和扩展中创建zval的宏为zval分配内存,所以答案是肯定的,在PHP中创建一个对象会导致创建一个存储在堆上的对象。事实上,所有类型的PHP变量都是幕后的zvals(这样可以轻松实现转换),因此它们实际上都存储在堆上。
如果您想在堆栈上存储数据,最好使用其他语言。
答案 1 :(得分:2)
答案是肯定的。
此外,您不应该控制PHP控制内存的方式。这是PHP等高级语言的一部分。请注意,C ++是一种非常低级的语言(语言本身没有考虑到不同的操作系统'你必须为不同的操作系统编写不同的代码'(你可以使用库,ofc,为你做这些)。)