c/c++中的内存访问冲突问题

1.数组(内存)溢出

此处的数组指的就是一块已经分配的内存,而你要读取的数据却是超过了这部分内存的地方。

//将一个较大的值赋值给以个较小的区间
char buf[5]="This is a problem!"
//数组下标的溢出
buf[7]=2;

2.句柄或指针在使用前被释放

此类情况目前还只在vc++中遇见,在声音还未结束播放的时候,提前清理了声音播放的数据,导致了错误退出

    waveOutPrepareHeader(hwo, &wh, sizeof(WAVEHDR));//准备一个波形数据块用于播放
    waveOutWrite(hwo, &wh, sizeof(WAVEHDR));//在音频媒体中播放第二个函数wh指定的数据

    int wait_time = cnt / 4000 * 1000;
    Sleep(wait_time);
    //声音结束而清理数据的话会发生错误,sleep的时间小于了声音播放时间
    waveOutUnprepareHeader(hwo, &wh, sizeof(WAVEHDR));//清理数据 

 

posted @ 2018-10-30 09:35  bookdrip  阅读(953)  评论(2)    收藏  举报