遇到的問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章