遇到一个sndPlaySound 函数内存泄露的情况:
   具体情况如下 程序通过 SendMessage 函数不停发送消息,在接受消息函数处理中,对特定信息使用“sndPlaySound”函数相应声音:
        sndPlaySound(ArrayAlarmSound[2],SND_ASYNC|SND_NOSTOP);
   使用异步方式调用播放声音,不打断原来的声音播出并立即返回FALSE。即使这种情况下,程序任然还是不停的有一小部分内存的泄露。
   各位有什么好的结局方法没有?   

解决方案 »

  1.   

    不 sndplaySound 还有泄漏吗?
      

  2.   

    sndPlaySound
    内存泄漏还真不知道,你试试把这个函数调用去掉,跑跑试试,有没有可能是其它的地方引起的?
      

  3.   

    我觉得不一定是这个函数。LZ多检查下。
    有次忘记释放DC了。。调试了好久才发现。。
      

  4.   

    O(∩_∩)O~查了一天了,只要把使用sndPlaySound 函数的这段代码给屏蔽了就不会出现内存泄露的问题了! 
      它产生内存泄露时肯定了! 就是不知道有没有什么方式能够释放多余的内存,或使用其他的方式播放“*.wav”
    文件。
      

  5.   

    单独写一段程序,就不断的操作sndPlaySound看看是否存在内存泄漏?
      

  6.   

     通过测试了,确实发现有内存泄露的情况啊!  可以介绍一个其他的播放声音的API函数么?
      O(∩_∩)O~
      

  7.   

    PlaySound
    mciSendString("open train.wav", NULL, 0, NULL);
    以前我用的好像都没有问题可能与你的驱动程序有关, 如果真是驱动的问题,用其它的API也会有相同的问题
    换个不同的机器试试看
      

  8.   

    使用sndPlaySound函数异步方式不停调用程序,在别人的机子上也是这种情况。