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,否则会造成内存泄漏