C++内存泄漏问题
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;int main(){ unsigned int MAX = (unsigned int)(1 << 31); unsigned int size = MAX >> 5; int *bit1 = (int *)malloc(size + 1); if(bit1 == NULL){ cerr<<"Malloc error!"<<endl; exit(1); } memset(bit1, 0, size); cout<<size<<"\t"<<bit1[size]<<endl; return 0;}int *bit1 = (int *)malloc(size + 1); //bit1类型是int*,取bit1[size]时实际上取的是第(size - 1) * sizeof(int)个字节开始的数据。当然越界了。
[解决办法]
1:楼主可以回顾一下malloc用法,malloc申请内存是需要显示指出总字节数的(char可以省略)
2:new比较适合楼主。
[解决办法]
我觉得你可以调用bit1[size/4];
[解决办法]
int *p;
如果用p[N]取值, 则指向的是P后面第4*N字节的位置
[解决办法]
bit1[size]肯定越界了,
而且没有free