问题列表 - 第7697页

在c#中显式释放内存

我创建了一个使用150mb内存(私有字节)的ac#应用程序,主要是因为一个很大的字典:

Dictionary<string, int> Txns = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)

我想知道如何释放这个记忆.我试过这个:

Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有对我的私人字节造成太大影响 - 他们从155mb减少到145mb.有线索吗?

谢谢

-编辑-

好吧,我对这段代码运气不错(它将私有字节减少到50mb),但为什么呢?

Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

-编辑-

对于那些说'不要使用GC.collect'的人来说,这是公平的(我不打算辩论,除了说你可以看到我的C背景通过),但它并没有真正回答我的问题:如果我先清除事务列表,为什么垃圾收集器只释放内存?它不应该释放内存,因为字典已被解除引用?

.net c# memory profiling memory-leaks

37
推荐指数
3
解决办法
7万
查看次数

C#,像方法一样实现'静态抽象'

我最近遇到了一个问题,似乎我需要一个'静态抽象'方法.我知道为什么这是不可能的,但我怎样才能解决这个限制?

例如,我有一个抽象类,它有一个描述字符串.由于此字符串对于所有实例都是通用的,因此它被标记为static,但我想要求从此类派生的所有类都提供它们自己的Description属性,因此我将其标记为abstract:

abstract class AbstractBase
{
    ...
    public static abstract string Description{get;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

它当然不会编译.我想过使用接口但接口可能不包含静态方法签名.

我应该简单地使它成为非静态的,并且总是得到一个实例来获取特定于类的信息吗?

有任何想法吗?

c# static abstract

41
推荐指数
4
解决办法
3万
查看次数

新的Windows 7系统 - 现在如何向用户显示信息

新的Windows 7默认隐藏系统托盘图标.

现在向用户显示信息的推荐方法是什么?

我需要向用户显示一个小的可点击图标,以便用户随时可以访问我的"工具".我应该使用小工具来显示我的GUI吗?它可以以某种方式与我的Delphi应用程序通信吗?

windows-7

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

有没有办法在 Android 中创建自定义答录机?

我想创建一个应用程序,允许您使用以下命令过滤来电到各种应答消息:

  • 对于列入黑名单的电话号码,“此号码不可用”
  • 给陌生人的正式信息
  • 关于您为朋友所做的事情的信息性消息

我不知道如何自动接听电话,播放录制的消息,然后等待应答并录制。或者也许只有一种与实际应答系统交互的方法,所以我只需要插入即可。

任何线索都强烈赞赏。任何代码片段都需要人类牺牲:-)

android

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

Objective-C备忘单

Objective-C有哪些备忘单?

我用谷歌搜索,但我真的不知道该寻找什么.他们中的大多数人都认为我知道Objective-C而我不知道.我真的想要一本针对经验丰富的程序员的指南.

objective-c

10
推荐指数
1
解决办法
7791
查看次数

为iPhone应用程序编译自定义SQLite

我正在尝试将SQLite合并源编译到我的iPhone应用程序中(让我可以访问iPhone编译版本的二进制文件中没有的全文搜索功能.

当我将sqlite3.c和sqlite3.h添加到普通的Carbon C应用程序模板时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在我的iPhone项目中编译它时,我得到了一些错误相关丢失函数声明.我可以通过明确地包含ctype.h来解决这些问题,但这有点奇怪.

但是,即使在构建之后,它仍然无法链接以下错误:

"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我认为它是iPhone应用程序的构建设置中的东西,但我无法弄明白.有任何想法吗?

sqlite iphone xcode

11
推荐指数
1
解决办法
6616
查看次数

39
推荐指数
1
解决办法
2万
查看次数

C#中的堆栈容量

有人能告诉我C#中的堆栈容量是多少.

我正在尝试使用30,000个项目的数组形成3D网格闭合对象.

.net c# clr stack

49
推荐指数
5
解决办法
4万
查看次数

三元树与哈希表

我需要知道三元树是否比哈希表更好.

我在回答另一个问题时遇到了这个问题,有人说三元树通常比哈希表更快.我发现很难相信,所以我决定研究一下.

普林斯顿的这个网站似乎是信仰的源泉.我看了一下算法,它被描述为O(log n + k),其中n是存储的字数,k是密钥的长度.

在我看来,如果你经常搜索尚未存储的元素,那么唯一的方法就是更快.困扰我的另一件事是,trie的非连续爬行会导致你击中已被换掉的页面,但这是否是一个主要影响只能通过基准来看.

现在我知道两者都有利有弊,如果是的话,我想知道它们是什么.基准测试也很有帮助.

algorithm hashtable ternary-search-tree

13
推荐指数
2
解决办法
4143
查看次数

如何让Emacs自动缩进我的C代码?

我刚刚开始感受到emacs,但是当我按下返回键时,我很沮丧.我知道如果我按下它会做它,但我不能养成这个习惯.我不能.我需要回击,我讨厌每次重新标记.

我进入选项并发现C模式钩子和C++模式钩子等 - 他们定义了两个键映射(10和13,我记得0A和0D是CR/LF,因为我在组装中经常使用它们) - - 我想,因为一个说" (lambda nil (define-key lisp-mode-map [13] (quote newline-and-indent))"和另一个相同,但(quote newline)相反,我只是把 - 并 - 缩进在它的末尾,并认为它会工作.

但事实并非如此:我设置并保存它,尝试过但无济于事.重启emacs,仍然没有成功.如何缩进我的代码呢?非常疯狂的是,emacs需要一个lisp学位才能根据你的基本需求进行配置.

另外,作为一个侧面问题:如何从剪贴板复制和粘贴Killing/yanking很方便,除了我讨厌每次我想粘贴到其他地方时都要编辑 - >复制.

- 编辑 -

好吧,我把以下几行放到我的.emacs中并且它有效:

(add-hook 'c-mode-common-hook (lambda ()
      (local-set-key (kbd "RET") 'newline-and-indent)))

谢谢您的帮助

emacs

22
推荐指数
4
解决办法
2万
查看次数