C\C++内存管理(2)

1)图中的全局变量、静态数据需要长期存在,程序启动时分配,程序结束时释放

(2) localVar、num1[10]、char2[ ]、pChar3、ptr1、ptr2、ptr3这些变量在函数调用时分配,函            数结束时自动释放,随着函数开辟,因此存储在栈区

(3)pChar3指针指向的“abcd”属于字符串、char2的字符数组,属于只读类,因此存储在代码段

(4)malloc、realloc、calloc开辟的内存空间不受函数控制,需要手动释放,固在堆区

问:为什么指针、以及对应后面的数据需要分开存储?(雷区:误以为整行语句在同一个空间)

(1)首先指针本身就是一个变量(指针变量),存储指向后面数据的地址,它的生命周期遵循局           部变量规则,固存储在栈区

(2)同理 num1【】是一个局部数组变量,它的生命周期也是随当前函数开辟释放

(3)而字符指针指向的字符串数据内容属于只读需要,固存储在代码段更好

总结:通过高效的内存分配方式,不断提高程序的性能和安全性
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/Dovis5884/article/details/148200757

1)图中的全局变量、静态数据需要长期存在,程序启动时分配,程序结束时释放

(2) localVar、num1[10]、char2[ ]、pChar3、ptr1、ptr2、ptr3这些变量在函数调用时分配,函            数结束时自动释放,随着函数开辟,因此存储在栈区

(3)pChar3指针指向的“abcd”属于字符串、char2的字符数组,属于只读类,因此存储在代码段

(4)malloc、realloc、calloc开辟的内存空间不受函数控制,需要手动释放,固在堆区

问:为什么指针、以及对应后面的数据需要分开存储?(雷区:误以为整行语句在同一个空间)

(1)首先指针本身就是一个变量(指针变量),存储指向后面数据的地址,它的生命周期遵循局           部变量规则,固存储在栈区

(2)同理 num1【】是一个局部数组变量,它的生命周期也是随当前函数开辟释放

(3)而字符指针指向的字符串数据内容属于只读需要,固存储在代码段更好

总结:通过高效的内存分配方式,不断提高程序的性能和安全性
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/Dovis5884/article/details/148200757

1)图中的全局变量、静态数据需要长期存在,程序启动时分配,程序结束时释放

(2) localVar、num1[10]、char2[ ]、pChar3、ptr1、ptr2、ptr3这些变量在函数调用时分配,函            数结束时自动释放,随着函数开辟,因此存储在栈区

(3)pChar3指针指向的“abcd”属于字符串、char2的字符数组,属于只读类,因此存储在代码段

(4)malloc、realloc、calloc开辟的内存空间不受函数控制,需要手动释放,固在堆区

问:为什么指针、以及对应后面的数据需要分开存储?(雷区:误以为整行语句在同一个空间)

(1)首先指针本身就是一个变量(指针变量),存储指向后面数据的地址,它的生命周期遵循局           部变量规则,固存储在栈区

(2)同理 num1【】是一个局部数组变量,它的生命周期也是随当前函数开辟释放

(3)而字符指针指向的字符串数据内容属于只读需要,固存储在代码段更好

总结:通过高效的内存分配方式,不断提高程序的性能和安全性
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/Dovis5884/article/details/148200757

1)图中的全局变量、静态数据需要长期存在,程序启动时分配,程序结束时释放

(2) localVar、num1[10]、char2[ ]、pChar3、ptr1、ptr2、ptr3这些变量在函数调用时分配,函            数结束时自动释放,随着函数开辟,因此存储在栈区

(3)pChar3指针指向的“abcd”属于字符串、char2的字符数组,属于只读类,因此存储在代码段

(4)malloc、realloc、calloc开辟的内存空间不受函数控制,需要手动释放,固在堆区

问:为什么指针、以及对应后面的数据需要分开存储?(雷区:误以为整行语句在同一个空间)

(1)首先指针本身就是一个变量(指针变量),存储指向后面数据的地址,它的生命周期遵循局           部变量规则,固存储在栈区

(2)同理 num1【】是一个局部数组变量,它的生命周期也是随当前函数开辟释放

(3)而字符指针指向的字符串数据内容属于只读需要,固存储在代码段更好

总结:通过高效的内存分配方式,不断提高程序的性能和安全性
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/Dovis5884/article/details/148200757

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值