小编c_s*_*rma的帖子

C/C++:取消分配或删除动态创建的内存块

可能重复:
C++删除 - 删除我的对象,但我仍然可以访问数据?

我试图在C/C++中释放一块动态创建的内存.
但是我使用的标准方法(malloc/free和new/delete)似乎都是功能失调的.
下面给出的两个代码的o/p是相似的.
这是使用malloc/free的代码:

    #include<stdio.h>
    #include<stdlib.h>

    int main(){
        int * arr;
        arr = (int *)malloc(10*sizeof(int)); // allocating memory
        int i;
        for(i=0;i<10;i++)
            arr[i] = i;
        for(i=0;i<10;i++)
            printf("%d ",arr[i]);
        printf("\n");
        free(arr); // deallocating
        for(i=0;i<10;i++)
            printf("%d ",arr[i]);
        printf("\n");
    }
Run Code Online (Sandbox Code Playgroud)


这是使用new/delete []的代码:

    #include<stdio.h>
    #include<stdlib.h>

    int main(){
        int * arr;
        arr = new int[10]; // allocating memory
        for(int i=0;i<10;i++)
            arr[i] = i;
        for(int i=0;i<10;i++)
            printf("%d ",arr[i]);
        printf("\n");
        delete[] arr; // deallocating
        for(int i=0;i<10;i++)
            printf("%d ",arr[i]);
        printf("\n");
    }
Run Code Online (Sandbox Code Playgroud)

但是,即使在释放内存之后,它们也没有任何错误.
两种情况下的o/p都是相同的:

0 1 …
Run Code Online (Sandbox Code Playgroud)

c c++ pointers dynamic-memory-allocation

2
推荐指数
1
解决办法
1190
查看次数

标签 统计

c ×1

c++ ×1

dynamic-memory-allocation ×1

pointers ×1