动态内存管理(下)

简介: 动态内存管理(下)

@TOC
感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python

常见的动态内存的错误

对NULL指针的解引用操作

void test()
{
   
    int* p = (int*)malloc(INT_MAX / 4);
    *p = 20;//如果p的值是NULL,就会有问题
    free(p);
}

对动态开辟空间的越界访问

void test()
{
   
    int i = 0;
    int* p = (int*)malloc(10 * sizeof(int));
    if (NULL == p)
    {
   
        exit(EXIT_FAILURE);
    } f
        or (i = 0; i <= 10; i++)
    {
   
        *(p + i) = i;//当i是10的时候越界访问
    } f
        ree(p);
}

对非动态开辟内存使用free释放

 void test()
{
   
    int a = 10;
    int *p = &a;
    free(p);//ok?
}

使用free释放⼀块动态开辟内存的⼀部分

void test()
{
   
    int *p = (int *)malloc(100);
    p++;
    free(p);//p不再指向动态内存的起始位置
}

对同⼀块动态内存多次释放

void test()
{
   
    int *p = (int *)malloc(100);
    free(p);
    free(p);//重复释放
}

动态开辟内存忘记释放(内存泄漏)

void test()
{
   
    int *p = (int *)malloc(100);
    if(NULL != p)
    {
   
        *p = 20;
    }
} 
int main()
{
   
    test();
    while(1);
}

忘记释放不再使用的动态开辟的空间会造成内存泄漏。
切记:动态开辟的空间⼀定要释放,并且正确释放

目录
相关文章
|
5天前
|
程序员 C语言 C++
动态内存管理(2)
动态内存管理(2)
21 1
|
23天前
|
程序员
21.动态内存管理
21.动态内存管理
|
23天前
|
存储 Linux C语言
5.C++动态内存管理(超全)
5.C++动态内存管理(超全)
|
30天前
|
程序员 编译器 C语言
带你彻头彻尾了解『动态内存管理』
带你彻头彻尾了解『动态内存管理』
|
1月前
动态内存管理
动态内存管理
42 1
|
1月前
|
存储 安全 算法
c++动态内存管理(一)
C++ 动态内存管理 在 C++ 中,动态内存管理是一个核心概念,它允许在运行时分配和释放内存。以下是 C++ 动态内存管理需要掌握的关键知识点:
126 0
|
11月前
动态内存管理(二)
动态内存管理
37 0
|
6月前
|
程序员 编译器
动态内存管理-1
动态内存管理
37 0
|
6月前
|
程序员 C语言 C++
动态内存管理-2
动态内存管理
25 0
|
7月前
|
C语言 C++
C++中的动态内存管理
C++中的动态内存管理