首先,为什么为造成堆内存的溢出?
申请的内存 在使用的时候 扩大的他的内存 这时就造成了内存溢出
注意这是堆内存 当然栈的溢出其实都差不多啦
容易造成这种问题的几个函数
memset,memcpy,strcpy,sprintf这些函数 一不小心就会造成难以想象的错误
说下碰到的问题:
在debug下退出崩端 release下无问题
提示是 堆内存溢出了
这个是由于debug下 delete时会检查分配的堆内存 是否有内存溢出等内存问题
代码如下
class Base
{
int;
}
class Child : public Base
{
double aaaa;
}
class A
{
Base base;
};
void SomeFunction()
{
(Child*)&base ->aaaa;
这里是将父类转化为子类操作了 这样就造成内存溢出了 分配的时候只分配了 父类的大小
}