动态内存分配— —常见错误总结

简介: 动态内存分配— —常见错误总结

1. 申请的内存多次释放

2. 内存泄漏

3. 释放的内存不是申请时的地址

4. 释放空指针

5. 释放一个内存块,但继续引用其中的内容

6. 越界访问

以下是代码解释:

// demo 9-9.c
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
  int* p = new int[18];
  p[0] = 0;
  char* p1 = NULL;
  //1.申请的内存多次释放, 程序出现异常
  //... ...
  //... ...
  //delete[] p;//只允许一次释放
  //... ...
  //... ...
  //delete[] p;
  //2. 忘记 delete,内存泄漏
  /*
  do
  {
  }while(1==1);
  */
  //3.释放的内存不是申请时的地址
  /*for(int i=0; i<18; i++)
  {
    cout<<*(p++)<<endl;
  }
  delete [] p;*/
  //4.释放空指针
  // ... ...
  /*if(1==0)
  { //比如文件能打开的情况
    p1 = new char[2048];
  }
  ... ...
  delete p1;
  */
  //5.释放一个内存块,但继续引用其中的内容
  /*delete[] p;
  // ...继续码代码...
  p[0]= '\0';//绝对禁止
  */
  //6.越界访问
  memset(p, 0, 18 * sizeof(int));
  for (int i = 0; i < 18; i++) 
  {
    cout << *(p++) << endl;
  }
  //误判
  for (int i = 0; i < 18; i++) 
  {
    cout << *(p++) << endl;
  }
  cout << "come here!" << endl;
  system("pause");
  return 0;
}


相关文章
|
Unix 程序员 Linux
【OSTEP】动态内存开辟 | 内存API常见错误 | UNIX: brk/sbrk 系统调用 | mmap创建匿名映射区域 | mmap创建以文件为基础的映射区域
【OSTEP】动态内存开辟 | 内存API常见错误 | UNIX: brk/sbrk 系统调用 | mmap创建匿名映射区域 | mmap创建以文件为基础的映射区域
348 0
|
C语言
【C语言】:总结动态内存的常见错误
【C语言】:总结动态内存的常见错误
114 0
|
编译器 C语言
【C语言】动态内存分配malloc,realloc等函数使用和常见错误(上)
【C语言】动态内存分配malloc,realloc等函数使用和常见错误(上)
197 0
动态内存分布——malloc,calloc,realloc,free的使用。以及关于动态内存的常见错误。
动态内存分布——malloc,calloc,realloc,free的使用。以及关于动态内存的常见错误。
|
C语言
【C语言】动态内存分配malloc,realloc等函数使用和常见错误(下)
【C语言】动态内存分配malloc,realloc等函数使用和常见错误(下)
236 0
|
程序员 编译器 C语言
动态内存的定义及使用(附常见错误点)
动态内存的定义及使用(附常见错误点)
346 0
动态内存的定义及使用(附常见错误点)
|
程序员 编译器 C语言
【C】动态内存管理(相关函数、常见错误、笔试题)
【C】动态内存管理(相关函数、常见错误、笔试题)
139 0
【C】动态内存管理(相关函数、常见错误、笔试题)
动态内存开辟的常见错误,在堆上开辟和在栈上开辟详细解析
动态内存开辟的常见错误,在堆上开辟和在栈上开辟详细解析
118 0
|
3月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
857 0

热门文章

最新文章