程序流程大致如下:
1.执行程序定义一个静态数据,初始化往里面放入数据
2.执行程序将这个数组的地址传给dll,然后dll也有一个线程,不定时从这个静态数组copy数据到dll中开辟的空间中。copy完后给执行程序发一个线程消息,线程收到消息后就往数组放数据。
3.执行程序也开一个线程,(专门负责往这个数组放数据,)当线程收到一个线程消息,就往这个指定的静态数组放数据;现在出现一个问题:
在用任务管理器查看执行程序时,内存使用 和 虚拟内存使用 在不断增加,但我关掉执行程序时 debug模式下又没有监视到内存泄漏。。我想知道为什么 内存使用会一直增加???
1.执行程序定义一个静态数据,初始化往里面放入数据
2.执行程序将这个数组的地址传给dll,然后dll也有一个线程,不定时从这个静态数组copy数据到dll中开辟的空间中。copy完后给执行程序发一个线程消息,线程收到消息后就往数组放数据。
3.执行程序也开一个线程,(专门负责往这个数组放数据,)当线程收到一个线程消息,就往这个指定的静态数组放数据;现在出现一个问题:
在用任务管理器查看执行程序时,内存使用 和 虚拟内存使用 在不断增加,但我关掉执行程序时 debug模式下又没有监视到内存泄漏。。我想知道为什么 内存使用会一直增加???
在用任务管理器查看执行程序时,内存使用 和 虚拟内存使用 在不断增加
---
一直增加呢还是增加到一定程度就不变了?刚开始的时候有增加正常.1. 静态数组本身不会引起内存泄露2.
debug模式下又没有监视到内存泄漏
---------------
你是在调试模式下么? 如果源代码都在工程中(没有使用第三方库), debug 调试模式下没有监视到内存泄漏一般就不会有泄露3.
dll也有一个线程,不定时从这个静态数组copy数据到dll中开辟的空间中
-----
copy的时候有没有分配内存, 主要还是检测一下其他地面有没有泄露的可能
2.debug模式下没有内存泄漏
3.内存是一直增加,但我调用程序中的中止函数时,这些增加的内存会一次减少到程序启动状态
我是用DirectSound在做边下载边播放,所以需要主线程不断给我数据解码,整个过程我都是用的unsigned char[INBUFF],没有new。主线程是把这个静态缓冲区地址传给dll,然后dll 每次需要数据时从这个地址copy到dll的缓冲区(静态分配)解码。
(然后循环覆盖这个缓冲区)
==>
是不是DirectSound解码部分的问题