new
程序员文章站
2022-03-18 19:40:53
...
动态内存分配
用new运算符实现动态内存分配
分配一个变量
p=new t;
t是任意类型名,p为类型为t*的指针。
动态分配出一片大小为sizeof(t)字节的内存空间,并将该内存空间的起始地址赋值给p。
int*pn;
pn=new int;
*pn=5;
分配一个数组
p=new t[n];
t是任意类型名,p为类型为t*的指针。
n:要分配数组元素的个数,可以是整型表达式;
动态分配出一片大小为n*sizeof(t)字节的内存空间,
并将该内存空间的起始地址赋值给p。
int * p;
int i=5;
p=new int [i*20];
p[0]=100;///yes.对p[0]赋值
p[100]=100;///no,越界。
new运算符返回值类型
new t;
new t[100];
返回值都是t*。
释放动态分配出来的内存空间
delete 运算符
delete 指针;//该指针指向new出来的空间
delete []指针;
一片空间不能被delete多次。
释放动态分配的变量
int*p=new int;
*p=5;
delete p;
释放动态分配的数组
int*p=new int[20];
p[0]=1;
delete []p;
动态分配指针数组
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char *name[5],str[15];
int i,len;
for(i=0;i<5;++i)
{
gets(str);
len=strlen(str);
name[i]=new char[len];///可见和malloc的不同,这 里还是char。
strcpy(name[i],str);
}
for(i=0;i<5;++i)
{
cout<<name[i]<<;
}
}
推荐阅读
-
C++用new与不用new创建对象的区别
-
js中new一个对象的过程
-
实例解析Python中的__new__特殊方法
-
详解Python中的__new__、__init__、__call__三个特殊方法
-
JS中‘hello’与new String(‘hello’)引出的问题详解
-
详解C#用new和override来实现抽象类的重写区别
-
You have new mail in /var/spool/mail/root
-
C++高级编程之对象模型、const、new和delete及其重载讲解
-
详解Node.js项目APM监控之New Relic
-
js之ActiveX控件使用说明 new ActiveXObject()