这是在 D 中将垃圾收集与无垃圾收集代码结合起来的正确方法吗?

问题描述 投票:0回答:1
我一直对系统级编程语言表现出兴趣,D 引起了我的注意,所以我被告知 Dlang 默认情况下 GC 是打开的,但我可以将其关闭,但我超越了这一点,我想将手动内存管理与自动内存结合起来管理这里是我的代码

import core.stdc.stdio; import std.stdio; import std.array; import core.stdc.stdlib; void main() @trusted { string word = "hello"; int sizeOfString = word.length; string* words = cast(string*)malloc(char.sizeof*sizeOfString); string[] letters = "hello".split(""); for(auto i = 0; i < letters.length;i++) { words[i] = letters[i]; } writeln(*(words[4]).ptr); free(words); }
    
memory-management garbage-collection d
1个回答
0
投票
就像使用

@nogc 属性 标记您的函数一样简单。因此,在您的代码中,您应该使用@nogc,而不是@trusted。

当 D 编译器遇到标记为 @nogc 的函数时,它将确保在该函数的上下文中不会完成任何内存分配。 @nogc 函数只允许调用其他 @nogc 函数。

© www.soinside.com 2019 - 2024. All rights reserved.