- void *ptr = realloc(ptr, new_size);
- if (!ptr) {
- // 错误处理
- }
这里就引出了一个内存泄露的问题,当realloc() 分配失败的时候,会返回NULL。但是参数中的 ptr 的内存是没有被释放的。如果直接将realloc()的返回值赋给ptr。那么当申请内存失败时,就会造成ptr原来指向的内存丢失,造成内存游离和泄露。
正确的处理应该是这样:
- void *new_ptr = realloc(ptr, new_size);
- if (!new_ptr) {
- // 错误处理。
- }
- ptr = new_ptr