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;
}