关于free是如何释放内存的

4.1美团后台实习面试,没睡好效率极差。

其中有一个问题:free是如何释放内存的。

当时没答出来,网上找了几篇博文。

首先说一下C++和C的new/delete和malloc/free。

new做两件事:①分配内存 ②调用构造函数。delete是调用析构函数,然后释放内存。

malloc和free是分配和释放内存。malloc返回的是void指针,需要强制类型转换。

首先来看一段代码:

#include<iostream>
#include<windows.h>
#include<string>
#include<cstdlib>
using namespace std;
#include <iostream>
 
int main(int argc, char * argv[]) 
{ 
  char *p =new char;
  *p='a';
  delete p;
  char *p1=new char;
  *p1='b';
  *p='c';
  std::cout<<*p1<<std::endl;
  delete p1;
  return 0;
}

输出结果为:

 这是一个帖子里讨论的内容:https://bbs.csdn.net/topics/300014026/

p和内存好像钥匙和房子的关系。free(p)只是把房子还了回去,该房子可以再次分给别人,你如果再次造访这个不属于你的房子,你就会看到不属于你的东西。

(未完,后续补充)

猜你喜欢

转载自www.cnblogs.com/shilipojianshen/p/12620639.html