malloc和new的用法
在 C++ 和 C 语言中,我们经常需要动态分配内存空间来存储数据,malloc 和 new 两个函数就能帮我们实现这个功能。这两个函数虽然实现的功能相似,但使用方法还是存在一些不同的。
1. malloc 的用法
malloc 是 C 语言中的函数,它的模板为:
```molloc函数
void* malloc(size_t size);
```
其中,参数 size_t size 表示需要动态分配的内存空间的大小,函数返回的是该空间的首地址。一般我们可以这样使用:
```
int *p = (int*) malloc(sizeof(int));
if (p == NULL) {
// 给出错误提示
} else {
*p = 128;
printf("%d\n", *p);
free(p);
}
```
上述代码中,我们先调用 malloc 来申请动态空间,随后在内存中分配一段大小为 sizeof(int) 的空间,将它强制转换成 int* 类型,最后将指针 p 指向该空间的首地址。在结
束时,我们还需要用 free 函数来释放申请的空间。
在申请动态内存时我们往往会遇到内存不足的情况,在这种情况下需要对 malloc 函数的返回值进行判断,如果返回空指针则说明动态分配失败。
2. new 的用法
new 是 C++ 中的关键字,它的作用是在堆上动态分配内存空间,同时还可以执行构造函数。通常我们使用 new 操作符来申请动态内存分配,它的格式如下:
```
int *p = new int(128);
```
上述代码中,我们使用 new 操作符来动态分配了大小为 4 个字节的内存空间,并且在该空间中构造了一个 int 类型的变量,并将其初始化为 128,最后返回的是该变量的地址。在使用完该空间后,我们需要使用 delete 或 delete[] 函数来释放该内存空间。
与 malloc 相比,new 能自动计算动态分配的内存空间大小,而且不需要强制类型转换,它还能够在内存空间中自动执行构造函数和初始化对象值等操作,使得程序更加简洁、简单易懂。
3. 总结
总的来说,malloc 和 new 两个函数虽然实现的功能相似,但还是存在一些区别的。malloc 是 C 语言中的函数,需要手动计算动态分配的内存空间大小,并且在使用之后需要手动使用 free 函数来释放内存空间,malloc 不支持构造函数和初始化操作。而 new 是 C++ 中的关键字,可以自动计算内存空间大小,并且能够执行构造函数和初始化操作,在使用完之后需要使用 delete 或 delete[] 函数来释放内存空间。所以在使用时我们要根据实际情况选择使用哪个函数,并遵守相应的使用规范。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论