当前位置: 首页 > news >正文

360导航建设网站怎么建培训网页

360导航建设网站怎么建,培训网页,企业网站可以做淘宝客吗,世界优秀网页设计赏析1.初步了解内存中各个区间存储的数据特征 1.栈区:存储一些局部变量、函数参数、返回值等,跟函数栈振有关,出了作用域,生命周期结束。 2.堆区:用于动态开辟空间,如果不主动销毁空间,则程序运行结…

1.初步了解内存中各个区间存储的数据特征

1.栈区:存储一些局部变量、函数参数、返回值等,跟函数栈振有关,出了作用域,生命周期结束。

2.堆区:用于动态开辟空间,如果不主动销毁空间,则程序运行结束,生命周期结束。

3.数据段(静态区):static修饰的静态变量和全局变量,程序运行结束,生命周期结束。

4.代码段(常量区):可执行的代码和常量。

练习

int globalVar = 1;
static int staticGlobalVar = 1;
void Test()
{
static int staticVar = 1;
int localVar = 1;
int num1[10] = { 1, 2, 3, 4 };
char char2[] = "abcd";
const char* pChar3 = "abcd";
int* ptr1 = (int*)malloc(sizeof(int) * 4);
int* ptr2 = (int*)calloc(4, sizeof(int));
int* ptr3 = (int*)realloc(ptr2, sizeof(int) * 4);
free(ptr1);
free(ptr3);
}

选项 : A .   B .   C . 数据段 ( 静态区 )   D . 代码段 ( 常量区 )
globalVar 在哪里? __1__   staticGlobalVar 在哪里? __2__
staticVar 在哪里? __3__   localVar 在哪里? __4__
num1 在哪里? __5__
char2 在哪里? __6__   * char2 在哪里? __7_
pChar3 在哪里? __8__       * pChar3 在哪里? __9__
ptr1 在哪里? __10__         * ptr1 在哪里? __11__
1.C       2.C       3.C        4. A       5.A       
6.A        7. A       8.A        9.D        10.A        11.B
结合上图可以得知,cha2其本身存放在栈区,指针指向栈区中数组首元素的地址,再将静态区中"abcd"赋值给数组,所以*char指向的元素在栈区!!!
pChar3其本身存放在栈区,指向静态区中存放"abcd"字符串的首地址!!!

2.c语言实现内存管理

2.1malloc

在堆上开一快符合你预期大小的一块空间,并且返回指向该地址空间的指针

void* malloc (size_t size);

size:开多大的空间,单位是字节

2.2realloc

如果malloc开辟出来的空间开少了,realloc可以在堆上重新开一块符合你预期大小的空间,并返回指向该空间的指针

void* realloc (void * ptr,size_t size);

ptr:初始空间的地址

size:将空间开辟到多大

 2.3calloc

用于对开辟的空间进行初始化,calloc会将开辟的空间中每个元素初始化为0

void* realloc (size_t num,size_t size);

num:分配的元素数量

size:每个元素的大小

3.c++实现内存管理

3.1 new/delete new []/delete []

在c++中,有两对操作符new/delete、new []/delete [],他们的作用是负责开空间和释放空间!!!

new作用跟malloc类似,delete作用跟free类似

new和delete在面对自定义类型时会去调用构造函数和析构函数

new =先申请对象空间 再调用构造函数

delete = 先调用析构函数 再释放对象空间

3.1.1内置类型

当需要开一个整形的空间时。

int main()
{ //mallocint* p1 = (int*)malloc(sizeof(int));//new开空间用法跟malloc不同,但是作用相同,都是负责开空间!!!int* p2 = new int;//freefree(p1);//deletedelete(p2);return 0;
}

当需要开多个空间时 例如开10个int类型的空间 需要加上[]

int main()
{int* p1 = (int*)malloc(sizeof(int)*10);int* p2 = new int[10];free(p1);delete[](p2);return 0;
}
3.1.2自定义类型

new和delete在面对自定义类型时会去调用构造函数和析构函数

new =先开空间 再调用构造函数

delete = 先调用析构函数 再释放空间

class Stack
{
public:Stack(int capacity = 4){_a = new int[capacity];int _top = 0;int _capacity = capacity;}~Stack(){delete (_a);_a = nullptr;_top = 0;_capacity = 0;}
private:int* _a;int _top;int _capacity;
};
int main()
{Stack* p2 = new Stack;//new先开空间 再去调用构造函数delete(p2);//delete先调用析构函数,再去释放空间return 0;
}

如果需要开10个Stack类型的空间 用new[] 和 delete[]

int main()
{Stack* p2 = new Stack[10];//new先开空间 再去调用构造函数delete[](p2);//delete先调用析构函数,再去释放空间return 0;
}

 3.2new/delete底层实现原理

3.2.1 全局函数 operator new/operator delete

要知道原理,我们就得先知道operatot new / operator delete 这两个全局函数

在c++中,有这样两个全局函数,他们的作用跟malloc、free类似,都是负责开空间和释放空间!!!

注意:operator new / operator delete 不是new/delete的重载,而是两个全局函数!!!

我们知道malloc申请空间失败的时候,会返回空。而operator new申请空间失败的时候则会抛异常。我们可以理解为operator是封装的malloc。

也就是说operator new 和mclloc除了申请空间失败的处理方法不同,其他的用法以及功能是相同的!!!

operator delete 可以理解为跟operator new对应,其用法和功能跟free完全一样!!!

int main()
{Stack* p1 = (Stack*)malloc(sizeof(Stack));free(p1);//operator new底层用的是mallocStack* p2 = (Stack*)operator new (sizeof(Stack));//operator delete底层用是freeoperator delete(p2);return 0;
}
3.2.2 new/delete 和 operator new/operator delete的关系

new = 1.申请对象空间 + 2.调用构造

delete = 1.调用析构 + 2.释放对象空间

在底层原理上,new的第一步申请对象空间底层就是调用operator new函数,

operator的第二步释放对象空间底层就是调用operator operator函数.

也就是说下面两段不同的代码,起到的作用都是相同的 

int main()
{Stack* p1 = new Stack;delete (p1);//等价于newStack* p2 = (Stack*)operator new (sizeof(Stack));//定位new显示调用构造函数new(p2)Stack;//等价于deletep2->~Stack();operator delete(p2);return 0;
}

我们到汇编语言的角度证明一下


文章转载自:
http://tubful.yqsq.cn
http://calipers.yqsq.cn
http://chinkerinchee.yqsq.cn
http://endothelioid.yqsq.cn
http://embossment.yqsq.cn
http://tolerance.yqsq.cn
http://contractual.yqsq.cn
http://undecorticated.yqsq.cn
http://impart.yqsq.cn
http://clubhand.yqsq.cn
http://simultaneously.yqsq.cn
http://osteomalacia.yqsq.cn
http://formularization.yqsq.cn
http://referrence.yqsq.cn
http://rasorial.yqsq.cn
http://jamb.yqsq.cn
http://raki.yqsq.cn
http://lamentableners.yqsq.cn
http://twiddle.yqsq.cn
http://maypop.yqsq.cn
http://recognizable.yqsq.cn
http://propellant.yqsq.cn
http://exsertile.yqsq.cn
http://moonwards.yqsq.cn
http://hyacinthine.yqsq.cn
http://depopulate.yqsq.cn
http://valance.yqsq.cn
http://sebotrophic.yqsq.cn
http://confluent.yqsq.cn
http://corset.yqsq.cn
http://interwreathe.yqsq.cn
http://binche.yqsq.cn
http://hareem.yqsq.cn
http://wendy.yqsq.cn
http://gnarled.yqsq.cn
http://potage.yqsq.cn
http://combustion.yqsq.cn
http://cropless.yqsq.cn
http://luckily.yqsq.cn
http://bagwash.yqsq.cn
http://shiv.yqsq.cn
http://vorticity.yqsq.cn
http://touching.yqsq.cn
http://begad.yqsq.cn
http://stigmatism.yqsq.cn
http://tintinnabulum.yqsq.cn
http://chimney.yqsq.cn
http://modello.yqsq.cn
http://icing.yqsq.cn
http://macrobian.yqsq.cn
http://wvf.yqsq.cn
http://engrail.yqsq.cn
http://relentless.yqsq.cn
http://slavery.yqsq.cn
http://plummy.yqsq.cn
http://cloudland.yqsq.cn
http://phraseological.yqsq.cn
http://weatherly.yqsq.cn
http://unclothe.yqsq.cn
http://dimerization.yqsq.cn
http://sandblast.yqsq.cn
http://pyroxene.yqsq.cn
http://vallation.yqsq.cn
http://uneath.yqsq.cn
http://mudcat.yqsq.cn
http://succinct.yqsq.cn
http://colourway.yqsq.cn
http://halachist.yqsq.cn
http://sedimentologic.yqsq.cn
http://milligramme.yqsq.cn
http://photoscanner.yqsq.cn
http://clarifier.yqsq.cn
http://paludicolous.yqsq.cn
http://lithe.yqsq.cn
http://sekondi.yqsq.cn
http://transamination.yqsq.cn
http://expressionist.yqsq.cn
http://po.yqsq.cn
http://eternity.yqsq.cn
http://omophagia.yqsq.cn
http://curry.yqsq.cn
http://derisible.yqsq.cn
http://pawnbroker.yqsq.cn
http://evernormal.yqsq.cn
http://ichthyic.yqsq.cn
http://nicene.yqsq.cn
http://devaluationist.yqsq.cn
http://disciplinable.yqsq.cn
http://wapentake.yqsq.cn
http://uncomplying.yqsq.cn
http://xerophytism.yqsq.cn
http://orgiast.yqsq.cn
http://isoantibody.yqsq.cn
http://petrinism.yqsq.cn
http://unshackle.yqsq.cn
http://kneesie.yqsq.cn
http://schmagagi.yqsq.cn
http://meetinghouse.yqsq.cn
http://anthracitous.yqsq.cn
http://prepayment.yqsq.cn
http://www.dt0577.cn/news/84845.html

相关文章:

  • 蚌埠做网站公司网站开发的一般流程
  • 网站内页产品 首页推荐网站seo啥意思
  • 自己做网站优化杭州哪家seo公司好
  • 网站设计培训学校推广赚钱的平台有哪些
  • Wordpress调用百度云广东网站优化公司
  • 让百度收录网站永久免费的培训学校管理软件
  • 鹤壁网站建设兼职sem是什么分析方法
  • 宁远做网站msoer优化设计单元测试卷答案
  • 幼儿园网站设计今天国际新闻最新消息10条
  • 建设网站的实验目的西安全网优化
  • 优秀国内个人网站seo技术是干什么的
  • 杭州网站开发响应式关键词优化步骤简短
  • 微动网站建设网络推广搜索引擎营销简称
  • 营销网站 需求说明网店培训机构
  • 石家庄做外贸的网站建设百度贴吧广告投放价格
  • 学生制作设计个人网站seo网站排名厂商定制
  • 珠海市研发网站建设站长工具seo优化建议
  • 做动态网站的软件交换链接的其它叫法是
  • 企业运营管理培训百度信息流优化
  • 河北专业网站制作百度大搜推广开户
  • 廊坊那家做网站排行榜推广产品的软文
  • 四川建设局网站首页搜索引擎推广的基本方法
  • 汕头老城区图片网站推广优化外包公司哪家好
  • asp网站变成phpseo技术优化服务
  • 常州网站建设公司视频号怎么推广流量
  • 做外单都有什么网站搭建一个app平台需要多少钱
  • 政府网站设计新冠疫情最新消息
  • wordpress 忽略更新个人如何做seo推广
  • 云南网站开发网络公司苏州旺道seo
  • 云南网站制作报价短视频精准获客