根据上篇博客联想到了C/C++和Delphi的内存分配和管理的问题

首先看上一篇博客关于类创建对象的问题:http://www.cnblogs.com/xumenger/p/4462975.html

联想到通过指针分配内存

  我们通过指针动态分配了内存之后,需要记住这个指针(该指针指向分配的内存),比如C/C++中的

int *pi;
pi =(int*) malloc(10* sizeof(int));

  pi 就是用来记录分配的内存的地址。在Delphi中

var
    pi: PInteger;
begin
    GetMem(p, sizeof(Integer)*10);
end;

  这里的pi 也是用来记录分配的内存的地址

  就像上面两种情况,如果在没有释放内存之前想要让 pi 指向新的地址,这时候一定要创建新的指针首先保存 pi的值(也就是保存这块内存的地址,比如 ptemp)

//C/C++中
int* ptemp = pi;

//Delphi中
var
    ptemp: PInteger;
begin
    ptemp:= pi;
end;

  再去让 pi 去指向新的地址,这样就是为了不去丢失对这块内存的控制,这样pi 不再指向这块内存,但是可以通过新的指向这块内存的指针来释放这块内存,而不至于内存泄露,比如在C/C++和 Delphi中

//C/C++中
free(ptemp);

//Delphi中
FreeMem(ptemp);

  

  为什么要记住这块内存的地址?

  因为你之所以需要分配这块内存,就是要使用这块内存来存储数据、对这里的数据进行操作、以及最终去释放这块内存

  只有你记录这块内存的地址,才可以通过指针来使用这块内存,并且最终才能够释放这块内存,否则分了内存确立马丢失了这块内存的地址,一方面无法使用这块内存,另一方面无法释放内存,最终导致内存泄露

时间: 2024-11-10 15:17:53

根据上篇博客联想到了C/C++和Delphi的内存分配和管理的问题的相关文章

从博客专栏想到的数据分析

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以上博客专栏的建立时间,先后不远, 不过我们发现 Three.js 相关的文章,阅读量都在近 600 次左右, 虽然没法和牛人们的专栏相比,但至少

Haytham个人博客开发日志 -- Flask+Vue基于token的登录状态与路由管理

指路牌 符合一下关键词,这篇博客有可能会对你有帮助 不使用工厂函数的Flask应用 不使用蓝本的Flask应用 Flask跨域配置 基于Token的登录状态管理 Flask+Vue Vue路由拦截 Axios 钩子 适用场景 这是一篇个人博客搭建的记录博客,也是一篇关于Flask和Vue的简单"工具书",最后的代码会包含Web开发中常用的功能.(不全,只是使用频率相对高的) 环境 系统: 无关 Flask(Python3) Vue(Node.js) 参考 <Flask Web开发

继上篇博客对安卓爬虫以及TextView更新的问题解释

只能在主线程更新ui,或者用handler传输.爬虫是在另一个异步线程进行,所以爬出来的数据对控件赋值就比较麻烦.这次使用了线程数据传到runnable将数据传到handler进行赋值. 结果图: 源码: String word="软件工程"; // textView.setText(content.text().toString());//将爬取到的内容给另一个页面赋值 class MyRunnable implements Runnable { @Override public v

Python爬取CSDN博客文章

之前解析出问题,刚刚看到,这次仔细审查了 0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.windows下环境搭建 3.java里连接redis数据库 4.关于认证 5.redis高级功能总结1.基础底层数据结构1.1.简单动态字符串SDS定义: ...47分钟前1 url :http://blog.csdn.net/youyou1543724847/

android fragment 博客 学习记录

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Fragment回退栈,Fragment如何与Activity交互,Fragment与Activity交互的最佳实践,没有视图的Fragment的用处,使用Fragment创

04-dotnetCore博客后台基本功能实现

今天继续上篇博客的内容,在上一篇的时候,已经基本实现了博客列表内容的显示,继续进行添加.编辑.删除等功能.添加和编辑界面共用一个界面,添加界面如图所示: 同样我这里使用的还是layui里面的表单内容,直接拷贝这个界面: 把没必要的内容删除再稍作修改,直接贴修改后的代码,里面也包含了所有内容: @model DayaliBlog.Model.Blog.T_BLOG_CONTENT <blockquote class="layui-elem-quote">添加博客</bl

开源分享:用Python开发的开源博客系统Blog_mini

本博文在51CTO技术博客首发. 开源不易,Python良心之作,真心送给广大朋友,恳请给予支持,不胜感激! 0.Blog_mini送给你们:让每个人都轻松拥有可管理的个人博客 你从未架设过服务器或网站,希望可以接触一下这方面的知识-- 你从未使用过Linux操作系统,希望可以接触一下这方面的知识-- 你是初中生/高中生/大学生,希望能在学业之余锻炼一下自己的IT技能-- 你是Python新手,希望能有一个用Python开发的个人博客-- 你学习Python许久,希望有一个开源的项目可以用来学习

关于博客园创始人的心路历程,启发很大!

文章转自:https://www.cnblogs.com/yesihoang/p/4566471.html 本期人物简介:dudu 1997年毕业于南京电力高等专科学校,对计算机技术有一种执着的兴趣与热情,喜欢挑战性,喜欢为了自己的目标去努力,.NET技术的坚定支持者,博客园的创建者和维护者. 我见过很多技术类个人网站,以前的Visual Basic技术网站.Visual C++技术网站.现在的.net和Java网站,他们有一个共同特点就是在开始的时候红红火火,1-2年后就逐渐消亡,很难作大,很

在Azure中搭建Ghost博客并绑定自定义域名和HTTPS

绪论 之前一直使用cnblog写博客,现在将博客迁移至Microsoft Azure上的Ghost博客上,Ghost博客使用Markdown书写博客,页面简洁,是我喜欢的风格.具体参见官网:https://ghost.org/ ,将创建流程介绍一下. 在Azure上搭建Ghost博客 不得不说,在Azure上面搭建Ghost博客真的是太简单了,完全傻瓜化. 搜索到Ghost Blog项目 填写应用名称AppName,一般而言,将创建的Ghost博客默认域名为[AppName].azurewebs