⑴ c语言中new的用法
C语言没有new关键词,应该是C++里面编译设计增加了new new就是动态分配一个堆空间. int *p = new int;//使用指针指向新分配的连续空间 也可以是.int *p = new int[10];//数组
⑵ 关于c语言中new的使用
必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的。
所以程序就是:
long *pNumber = (long*)malloc(sizeof(long) * 1000000);
开辟后就可以像数组一样使用它了,使用完后,一定要记得释放它,用free,像这样free(pNumber);使用new更方便。
代码:
long* pNumber = new long[1000000];
使用完后,使用delete[]
像delete[] pNumnber;
(2)c语言new扩展阅读:
总结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是在指定位置初始化对象,也就是调用了构造函数,因此与之对应的就是析构函数了,只不过它不叫placementdelete而已。
void *pv = operator new(sizeof(vector<int>));
pv = new(pv) vector<int>(8, 0);
...
static_cast<vector<int>* >(pv)->~vector(); // call destruct function
operator delete(pv); // free memory
pv = NULL;
⑶ C语言 VC中 new怎么使用啊
在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.
C语言的malloc函数的使用方法:
1.首先定义一个long指针,像这样long* pNumber;
2.动态开辟一片内存(1000000个long),可以这样malloc(sizeof(long) * 1000000); malloc函数唯一的参数是一个size_t(unsigned long类型),它表示你要开辟的内存的大小,我们要开辟1000000个long.
3.返回一个void*指针,我们必须转换成long*指针,像这样(long*)malloc(..);
所以你要的程序就是:
long *pNumber = (long*)malloc(sizeof(long) * 1000000);
开辟后就可以像数组一样使用它了
使用完后,一定要记得释放它,用free,像这样free(pNumber);
使用new更方便
代码:
long* pNumber = new long[1000000];
使用完后,使用delete[]
像delete[] pNumnber;
⑷ 关于c语言中new字符的使用。
取决于你内存使用方式,pt仅仅是一指针,你想用它指向输入缓冲区,或者自己新申请内存都可以。
如果指向新申请内存,你记得要释放掉,以免造成内存泄露,你的函数仅仅是搜索,不需要新申请内存,就把指针指向输入缓冲区就很好
⑸ c++中new是什么意思
C++中new运算符用于动态分配和撤销内存的运算符。
new运算符使用的一般格式为new 类型 [初值]。
用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间。申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。
(5)c语言new扩展阅读:
1、用定位放置new操作,既可以在栈(stack)上生成对象,也可以在堆(heap)上生成对象。如本例就是在栈上生成一个对象。
2、使用语句A* p=new (mem) A;定位生成对象时,指针p和数组名mem指向同一片存储区。所以,与其说定位放置new操作是申请空间,还不如说是利用已经请好的空间,真正的申请空间的工作是在此之前完成的。
3、使用语句A *p=new (mem) A;定位生成对象是,会自动调用类A的构造函数,但是由于对象的空间不会自动释放(对象实际上是借用别人的空间),所以必须显示的调用类的析构函数,如本例中的p->~A()。
4、万不得已才使用placement new,只有当你真的在意对象在内存中的特定位置时才使用它。例如,你的硬件有一个内存映像的I/O记时器设备,并且你想放置一个Clock对象在哪那个位置。
参考资料:网络-new
⑹ C语言new函数到底应该怎么使用
C语言中没有new函数,但是有malloc函数
原型:void *malloc(unsigned int size);
#include<stdlib.h>或#include <malloc.h>
malloc 向系统申请分配指定size个字节的内存空间(连续的一块内存)。返回类型是 void* 类型。void* 表示未确定类型的指针。
malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。
申请零字节内存,函数并不返回NULL,而是返回一个正常的内存地址,但是你却无法使用这块大小为0的内存。
#include<stdio.h>
#include<conio.h>
intmain(void)
{
inti,n;
char*buffer;
printf("Howlongdoyouwantthestring?");
scanf("%d",&i);
buffer=(char*)malloc(i+1);
if(buffer==NULL)
{
exit(1);
}
for(n=0;n<i;n++)
{
buffer[n]=rand()%26+'a';/*generate0-25*/
}
buffer[i]='