动态内存管理(下)

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

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

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

目录
相关文章
|
编译器
【动态内存管理】
【动态内存管理】
64 0
|
7月前
|
程序员 编译器 C语言
动态内存管理
动态内存管理
|
7月前
|
编译器 程序员 C语言
动态内存管理(超详细!)
动态内存管理(超详细!)
61 2
|
7月前
|
存储 安全 算法
c++动态内存管理(一)
C++ 动态内存管理 在 C++ 中,动态内存管理是一个核心概念,它允许在运行时分配和释放内存。以下是 C++ 动态内存管理需要掌握的关键知识点:
171 0
|
程序员 C语言 C++
动态内存管理-2
动态内存管理
47 0
|
程序员 编译器 C语言
动态内存管理总结
动态内存管理总结
57 0
|
C语言 C++
C++中的动态内存管理
C++中的动态内存管理
|
编译器 文件存储 数据库
Day_17> 动态内存管理
Day_17> 动态内存管理
|
C语言
动态内存管理(上)
动态内存管理(上)
48 0