realloc的使用误区

  1. void *ptr realloc(ptr, new_size);
  2. if (!ptr{
  3. // 错误处理
  4. }

这里就引出了一个内存泄露的问题,当realloc() 分配失败的时候,会返回NULL。但是参数中的 ptr 的内存是没有被释放的。如果直接将realloc()的返回值赋给ptr。那么当申请内存失败时,就会造成ptr原来指向的内存丢失,造成内存游离和泄露。

正确的处理应该是这样:

  1. void *new_ptr realloc(ptr, new_size);
  2. if (!new_ptr{
  3. // 错误处理。
  4. }
  5. ptr = new_ptr

猜你喜欢

转载自blog.csdn.net/aabb7012086/article/details/80158196
今日推荐