關於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)只是把房子還了回去,該房子可以再次分給別人,你如果再次造訪這個不屬於你的房子,你就會看到不屬於你的東西。

(未完,后續補充)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM