在海康里面,有个录像功能,其中需要注册回调函数,然后读取内容

我发现每次调用之后,第一次是没有问题的,但是第二次之后就出现:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

 

文献提到:

http://topic.csdn.net/u/20080327/14/fb1b0644-2557-4f0d-a39d-16264b22b490.html

NET是自动管理内存,会自动的内存回收
而海康威视的API是C++做的,C++是用户自己管理内存

当在回调函数中执行的时候,.NET中已经把内存回收了,但你还要把这段内存给读出来,就会出现"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"错误

 

Again , google the http://msdn.microsoft.com/en-us/library/aa288468.aspx,再次阅读Tutorial,找到最后一句话:

Also, make sure the lifetime of the delegate instance covers the lifetime of the unmanaged code; otherwise, the delegate will not be available after it is garbage-collected.

 

应该问题是我的回调函数放在class里面了,被内存回收了。。估计是这个问题。看了网上的公开代码,别人的delegate都在class外边。

posted on 2008-10-20 02:13  大城小格  阅读(810)  评论(0编辑  收藏  举报