三九宝宝网宝宝教育教学论文

关于c语言中new的使用

02月16日 编辑 39baobao.com

[C语言如何在可变参数函数中使用printf]如psxf91所答,应使用v*系列的函数来实现。对比下printf与vprintf函数原型: 1 2 voidprintf(constchar*format, ...); voidvprintf(constchar*format, va_listap); 可以看出二...+阅读

必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的。

所以程序就是:

long *pNumber = (long*)malloc(sizeof(long) * 1000000);

开辟后就可以像数组一样使用它了,使用完后,一定要记得释放它,用free,像这样free(pNumber);使用new更方便。

代码:

long* pNumber = new long[1000000];

使用完后,使用delete[]

像delete[] pNumnber;

扩展资料:

总结C++中三种关于"new"的使用方法

其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如:

string* ps = new string("abc");

上面这个new表达式完成了两件事情:申请内存和初始化对象。

new操作符类似于C语言中的malloc,只是负责申请内存,例如:void* buffer = operator new(sizeof(string));

注意这里多了一个operator。这是new的第二个用法,算比较常见。

第三个用法不常见,它用于在给定的内存中初始化对象,也就是说你手中已有一块闲置的内存,例如:

void* buffer = operator new(sizeof(string));

//那么现在buffer是你所拥有闲置内存的指针

buffer = new(buffer) string("abc"); //调用了placement new,在buffer所指向的内存中初始化string类型的对象,初始值是"abc"

事实上,placement new也是new表达式的一种,但是比普通的new表达式多了一个参数,当然完成的操作和返回值也不同。

因此上面new的第一种用法可以分解两个动作,分别为后面的两种用法。

与new对应的delete没有三种语法,它只有两种,分别是delete operator和operator delete,也称为delete表达式和delete操作符。delete表达式和new表达式对应,完成对象的析构和内存的释放操作。而delete操作符只是用于内存的释放,和C语言中的free相似。例如:

string* ps = new string("abc");

...

delete ps; //调用delete表达式,先析构再释放

void* buffer = operator new(sizeof(string));

...

operator delete(buffer); //释放

placement new是在指定位置初始化对象,也就是调用了构造函数,因此与之对应的就是析构函数了,只不过它不叫placement delete而已。

void *pv = operator new(sizeof(vector));

pv = new(pv) vector(8, 0);

...

static_cast* >(pv)->~vector(); // call destruct function

operator delete(pv); // free memory

pv = NULL;

以下为关联文档:

c语言中怎样使用取余数的函数C语言用取模运算符“%”进行取模运算。取模运算符“%”的作用是求两个数相除的余数。例如,请看下面这段代码:x=15/7;如果x是一个整数,x的值将为2。然而,如果用取模运算符代替除法...

在c语言中如何使用系统函数得到当前的日期程序1: #include <stdio.h> #include <time.h> void main () { time_t T; struct tm * timenow; time ( &T ); timenow = localtime ( &T ); printf ( "现在时间是: %s", asctim...

如何在C语言使用正则表达式看到大家讨论这方面的东西,作点贡献聊表各位高手对这个版快的无私奉献 :oops: 如果用户熟悉Linux下的sed、awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极...

C语言中定义一个结构体如何在不同的 C文件中使用比如三个.c文件一个.h文件 1. c 2.c 3.c 4.h 这三个头文件都引用4.h include<4.h> 4.h中定义一个结构体类型struct test{}; 1.c中定义一个该结构体类型的全局变量struct tes...

c语言中汉字使用什么编码方式?语言简称:e、ve、e语言 最新版本:5.11 正式版(支持静态编译) 特色:第一个中国人自己打造的编程语言! ★全中文支持,无需跨越英语门槛。 ★全可视化编程,支持所见即所得程序界面设...

c语言中goto语句怎么使用goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto...

C语言中怎样使用goto语句goto用在内层循环中比较合适,用break只能跳出内层循环,而goto可以直接跳出最外层循环,在合理的地方使用就可以了。不要频繁的使用goto,过多的使用goto语句,会使程序混乱从理论上...

C语言中关于枚举类型1.enum 枚举的定义 枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举名为weekday,枚举值共有7个,即一...

C语言中的POW函数怎么使用使用方法: # include//这个。其实没有也可以。 double x,y,z;//自己按需赋值。【1】 z=pow(x,y); printf(“%lf\n【2】”,z【3】);//可以根据想输出几位,比如说输出一位小数%.1lf...

推荐阅读
图文推荐