设为首页 - 加入收藏
广告 1000x90
您的当前位置:144177黄大仙有求必应 > 静态存储分配 > 正文

动态内存free问题和静态函数存储

来源:未知 编辑:admin 时间:2019-06-26

  malloc申请到动态内存后,返回的是一个指针,但是free的时候怎么知道要释放所有空间呢?int*p=(int*)malloc(sizeof(int)*4)申请了4个int型数据空间如果free(p)的话,为什么系...

  malloc申请到动态内存后,返回的是一个指针,但是free的时候怎么知道要释放所有空间呢?

  如果free(p)的话,为什么系统就知道该free 4个int型数据空间呢?

  2. 静态变量存放在静态存储区,那静态函数的话,存放在哪呢?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部因为你用malloc分配内存的时候,p这个指针前面有一小块存储区存放着这块内存中的信息,也就是size。就跟你定义一个数组是一样的,并不仅仅是分配内存而已。

  至于静态函数的存放位置,如果是类的成员函数,那么就在这个类的vtable里面

  至于普通的静态函数存放在哪我还真没有研究,貌似没啥用吧。普通函数貌似就是给你随便分配一块内存而已。

  free 不管你的指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete/delete [] 要方便。不过,必须注意,如果你在分配指针时,用的是new或new[],那么抱歉,当你在释放内存时,你并不能图方便而使用free来释放。反过来,你用malloc 分配的内存,也不能用delete/delete[] 来释放。一句话,new/delete、new[]/delete[]、malloc/free 三对均需配套使用,不可混用!

  2 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。

  关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

  展开全部简单的说malloc()分配给用户的是一段连续的内存空间,在分配的空间的末尾会有特殊的标志位。

  当free()操作回收内存的时候,如果遇到标志位,自然就知道已经释放完了。

本文链接:http://that-a-way.com/jingtaicunchufenpei/234.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top