21xrx.com
2024-11-10 00:35:57 Sunday
登录
文章检索 我的文章 写文章
C++中的new和malloc如何使用?
2023-07-04 22:46:51 深夜i     --     --
C++ new malloc 使用

在C++中,new和malloc是两种不同的内存分配方式。虽然它们的目的都是为程序分配内存,但是在使用之前需要注意它们的使用方式和区别。

new是C++中的运算符,用于创建一个对象并返回一个指向该对象的指针。它会自动计算所需内存大小,并返回一个正确类型的指针。当使用new时,我们可以对这个对象进行初始化,因为new会自动调用相应对象的构造函数。下面是使用new的示例代码:


int* num = new int;  // 创建一个int类型的指针

*num = 10;      // 给指针赋值

delete num;      // 释放内存

使用new时要注意,由于它能够自动调用相应对象的构造函数,所以我们可以使用new来分配动态数组。下面是使用new创建动态数组的示例代码:


int* nums = new int[10];  // 创建一个有10个元素的int类型的数组

for(int i=0; i<10; i++) {

 *(nums+i) = i;      // 给数组元素赋值

}

delete[] nums;       // 释放内存

和new不同,malloc是C语言中的一个函数,用于分配内存。如果我们在C++中使用malloc来分配内存,它只会返回一个void*类型的指针,需要我们手动转换成正确的类型。由于malloc不知道我们要分配的内存大小,所以我们需要给它传递一个参数来指定所需内存大小。下面是使用malloc的示例代码:


int* num = (int*)malloc(sizeof(int));  // 创建一个int类型的指针

*num = 10;               // 给指针赋值

free(num);               // 释放内存

和new一样,我们也可以使用malloc来创建动态数组。但是需要注意的是,使用malloc来创建动态数组时,我们还需要手动给每个元素分配内存。下面是使用malloc创建动态数组的示例代码:


int* nums = (int*)malloc(sizeof(int)*10); // 创建一个有10个元素的int类型的数组

for(int i=0; i<10; i++) {

 *(nums+i) = i;             // 给数组元素赋值

}

free(nums);                // 释放内存

总结一下,new和malloc在C++中都可以用来分配内存,但是我们需要注意使用方式的不同点。使用new时,可以自动调用对象的构造函数,而使用malloc时需要手动转换成正确类型和手动为元素分配内存。因此,除非必须使用C语言库,否则建议在C++中使用new来分配内存。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复