DMD2 语言中的堆和栈:变量存储位置及区别
DMD2 语言中,通常情况下,基本类型、局部变量、函数参数和返回值等存储在栈上,而动态分配内存的对象、全局变量、静态变量等存储在堆上。
栈空间是由编译器自动分配和释放的,大小固定,存储在栈上的变量生命周期随着函数的结束而自动结束;而堆空间则是由程序员手动申请和释放的,大小不固定,存储在堆上的变量生命周期由程序员手动管理。
示例代码:
import std.stdio;
class MyClass {
int value;
this(int v) {
value = v;
writeln('MyClass constructor called with value ', v);
}
~this() {
writeln('MyClass destructor called with value ', value);
}
}
void foo(int n) {
MyClass obj = new MyClass(n); // 存储在堆上
// ...
obj.delete; // 手动释放堆空间
}
void main() {
int x = 10; // 存储在栈上
foo(x);
}
原文地址: https://www.cveoy.top/t/topic/n0UQ 著作权归作者所有。请勿转载和采集!