C语言中:malloc()
C++中:new
静态存储的不足和优点
不足:
1.栈内存容量有限
2.对象的生存期和作用域不够灵活
3.对象数组:
- 数组大小得是编译期常量
- 数组中各对象大小,类型相同
- 通常需要无参构造函数
4.类间编译期依赖与耦合度增加
优点:
不用担心内存的释放问题
用new运算符实现动态内存分配(堆内存)
第一种方法:分配一个变量
#include<bits/stdc++.h>using namespace std;int main(void){int *ptr;ptr=new int;*ptr=5;cout<<*ptr;return 0;}
第二种方法:分配一个数组
#include<bits/stdc++.h>using namespace std;int main(void){int *arr,i;arr=new int[10];for(i=0;i<10;i++)cin>>arr[i];for(i=0;i<10;i++)cout<<arr[i]<<ends;return 0;}
new运算符用法总结
和C语言中的malloc()没太大区别
用delete运算符释放动态分配
第一种方法:释放一个变量
#include<bits/stdc++.h>using namespace std;int main(void){int *ptr;ptr=new int;*ptr=5;cout<<*ptr;delete p;delete p;//报错 一片空间不能被delete多次,否则程序异常终止return 0;}
第二种方法:释放一个数组
#include<bits/stdc++.h>using namespace std;int main(void){int *arr,i;arr=new int[10];for(i=0;i<10;i++)cin>>arr[i];for(i=0;i<10;i++)cout<<arr[i]<<ends;delete [] p;//指针必须指向new出来的数组return 0;}
delete运算符用法总结
和C语言中的free()没太大区别
不过要注意delete一个数组时要加上”[]”
有new就一定要有对应的delete,否则会造成内存泄漏
