1.一直申请内存,没有释放内存,导致设备内存不够用,程序挂掉了。
2.踩内存,导致程序挂掉了。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
int a = 1, b = 2, c = 3;
memset(&b, 0, 8);//本来是只清零b变量,实际上清零了8个字节
printf("a = %d\tb = %d\tc = %d\n", a, b, c); //这里的a和b的值都被memset成了0,如果在大型程序中,memset(或者其他的改写内存数据的函数),这样就可能导致程序死机。
return 0;
}
3.死锁问题,只加锁,未释放
4.野指针问题
class Object
{
public:
Object()
{
/// a = 10;
str = "hello world\n";
}
void print()
{
/// cout << a << endl;
cout << str << endl;
}
private:
/// int a;///不知道为什么使用int,程序没有挂掉
string str;
};
int main()
{
Object *o = new Object;
vector<Object*> v;
v.push_back(o);
Object *tmp = v.front();
tmp->print();
delete o;///实际内存已经被析构掉了,
tmp = v.front();///此时,该指针指向的对象已经不存在了
tmp->print();///这里还去调用,
return 0;
}