Nhờ giúp sửa lỗi trong chương trình

Mọi người giúp em sửa lỗi cho chương trình này với ạ :
Mô tả bài toán :
Em đang tập làm về tính kế thừa , lớp đầu tiên là lớp Gia súc với 3 thuộc tính là tiếng kêu , số con đã sinh ( là ngẫu nhiên) và số lít sữa đã cho ( là ngẫu nhiên ) , lớp dẫn xuất là lớp Bò , lớp cuối cùng là lớp Đàn bò để thể hiện số lượng con bò , có 2 thuộc tính là số lượng con bò và 1 danh sách liên kết đơn .

Chuong trinh chay binh thuong nhung no lai bi ngat giua chung . Em có dò lại để xem có biến nào bị trả lại cho hệ điều hành không nhưng hình như là không có . Giúp em tìm lỗi với ạ .

#include <iostream>
#include <cstdlib>
#include <string>
#include <ctime>
using namespace std;

class Giasuc
{
protected:
    string tiengkeu;
    int socon;
    float sosua;
public:
    Giasuc()
    {
        tiengkeu = "...";
    }
    void Xuat()
    {
        cout << "Tieng keu : " << tiengkeu << endl;
        cout << "So con : " << socon << endl;
        cout << "So sua : " << sosua << endl;
    }
    void Sinhcon()
    {
        socon = rand() % 9;
    }
    void Sinhsua()
    {
        sosua = rand() % 22;
    }
};

class Bo : public Giasuc
{
public:
    Bo()
    {
        tiengkeu = "Muu";
    }
};

struct NodeBo
{
    Bo data;
    NodeBo* next;
};
struct ListBo
{
    NodeBo* Head;
    NodeBo* Tail;
};
class Danbo
{
private:
    int n;
    ListBo lb;
public:
    Danbo()
    {
        n = 0;
        lb.Head = NULL;
        lb.Tail = NULL;
    }
    void Nhap()
    {
        cout << "Nhap n : " ;
        cin >> n;
        srand(time(NULL));
        for(int i=0;i<n;i++)
        {
            NodeBo* p = new NodeBo;
            if( p == NULL)
            {
                cout << "Khong cap phat duoc ";
            }
            else
            {
                p->data.Sinhcon();
                p->data.Sinhsua();
                p->next = NULL;
            }
            if(lb.Head == NULL)
            {
                lb.Head = lb.Tail = p;
            }
            else
            {
                lb.Tail->next = p;
                lb.Tail = p;
            }
        }
        cout << "------------" << endl;
    }
    void Xuat()
    {
        cout << "So luong bo : " << n << endl;
        int j = 1;
        for(NodeBo* i = lb.Head ; i!=NULL; i =i->next)
        {
            cout<<"Bo mang so "<<j<<" : "<<endl;
            i->data.Xuat();
            ++j;
            cout << "--------" << endl;
        }
    }
};

int main()
{
         Danbo x;
         x.Nhap();
         x.Xuat();
}

Ủa? Hàm main() đâu?

À em quên .

int main()
{
    Danbo x;
    x.Nhap();
    x.Xuat();
}

Anh xóa cái hàm delete p; hộ em luôn . Nãy em thêm vào mà quên xóa .
Mà lạ thật đấy , trước lúc thêm hàm delete p; thì code không thay đổi , em ấn chạy khoảng 8,9 lần thì chương trình chạy rồi đột ngột bị ngắt . Em tắt máy đi tắm rồi mở máy chạy lại thì lại được (vẫn chương trình đó ) . Giờ nó chạy được rồi .

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?