指针悬垂

#include <iostream>
struct AAA {
  
    ~AAA() {
        printf("delete AAA \n");
        if (data)
        {
            delete[]data; 
        }
         data = NULL;
        len = 0;
       
    }
    char* data = NULL;
    int len = 0;
    
};

int main()
{
    std::cout << "Hello World!\n";
    AAA* A1 = new AAA();
    A1->len++;
    AAA* A2 = A1;
    AAA* A3 = A1;
    A1->data = new char[100];
    A1->len = 100;
    memset(A1->data, 0xFF, 100);
    delete[] A2->data;
    printf("delete data []\n");
    A2->data = NULL;
    A2->len = 0;
    if (A2)
    {
        delete A2;
        printf("delete A2\n");
    }
    A2 = NULL;
    printf("--------------\n");
    if (A3)
    {
        if (A3->data != NULL)
        {
            delete[] A3->data;
            printf("delete A3\n");
        }
        A3->data = NULL;
        A3->len = 0;
        delete A3;
    }
    A3 = NULL;
    return 0;

 

posted on 2025-04-30 17:09  邗影  阅读(5)  评论(0)    收藏  举报

导航