我有一个程序,其中使用了大量指针来完成各种任务,当我运行它足够长的时间(大约10分钟),我的内存消耗就会异常增加,这通常会导致程序停止运行(操作系统杀死它)。这让我想知道D语言中的指针是否受垃圾回收器的管辖。请问有人能给我解答一下吗?
我有一个程序,其中使用了大量指针来完成各种任务,当我运行它足够长的时间(大约10分钟),我的内存消耗就会异常增加,这通常会导致程序停止运行(操作系统杀死它)。这让我想知道D语言中的指针是否受垃圾回收器的管辖。请问有人能给我解答一下吗?
new
或GC.malloc
分配内存,则该内存可以被垃圾回收器收集。如果您使用常规C malloc
进行分配,则该内存将不受垃圾回收器管理。GC
有一些其他函数可控制如何管理内存(如果需要),但通常不必要。
我喜欢把垃圾回收器想象成非常愚蠢的东西。它有一些根指针,查看这些指针引用的数据以查找到垃圾收集数据的其他指针。如果某些数据被孤立了,那么它就可以被释放。这就是它所做的本质。
ref
参数)或class
引用。