小编aer*_*son的帖子

内存中的确切位置是删除使用的已分配内存的数量?

int* Array;

Array = new int[10];

delete[] Array;
Run Code Online (Sandbox Code Playgroud)

delete懂得分配内存的次数.我用Google搜索它将它存储在内存中,但它依赖于编译器.无论如何使用得到这个计数?

c++ memory allocation new-operator delete-operator

5
推荐指数
1
解决办法
303
查看次数

在JIT/AOT编译期间,CIL ldstr是否被替换为对string.Intern的常量引用?

假设我有一个需要优化但同时易于调试的代码.因此,我会为我使用的每个值分配一个字符串.该字符串是否会造成重大性能损失,或者它是否变成了一个从string.Intern在JIT/ AOTcompilation中获得的常量引用,从而变成一条简单的指令?

例:

在IL中它会是ldstr "gazilion lines".

它是在JIT/AOT编译期间变成类似的东西ldsflda string.InternCache.ID_0000647516166 并被const string ID_0000647516166 = "gazilion lines"; 添加到string.InternCache

是的,我理论上可以查看https://github.com/mono/mono但我不知道如何找到它.

是的,我正在混合使用CIL,C#以及编译的CIL,但是你明白了.

ldstr保证是O(1)

是的,它是CLR的"实现细节",但如果以这种方式进行优化,那将是有意义的.

c# string il cil

5
推荐指数
1
解决办法
208
查看次数

实现IEnumerable <T>和IEnumerable.GetEnumerator()不能公开,为什么?

要实现接口成员,实现类的相应成员必须是公共的.source:接口(C#编程指南)

我知道它是私有的,但我想理解为什么它不公开?

必须是私有接口成员实现

.net c# ienumerator enumerator

3
推荐指数
1
解决办法
379
查看次数