c++ - 使用 memcpy() 后是否需要删除内存?

标签 c++ arrays memory memory-leaks memcpy

我试图将一个数组的内容复制到另一个数组,但仅限于使用 memcpy() 函数。

这是我的尝试:

int source_array[3] = {1,2,3}; 
int destination_array[3];
memcpy(destination_array, source_array, sizeof(source_array) * 3);

问题是,我是否需要在关闭程序时对重复的数组执行 delete[] 以避免任何内存泄漏?

最佳答案

不!

你不需要delete任何东西,因为你没有使用new分配任何东西。


考虑以下片段:

int x[10];

void method() {
     int y[10];
     int *z = new int[10];
     delete z;
}

第一个声明,int x[10],使用静态存储持续时间,由 cppreference 定义为:“对象的存储在程序开始时分配,在程序结束时释放。仅对象的一个​​实例存在。在命名空间范围(包括全局命名空间)声明的所有对象都具有此存储持续时间,加上那些用 static 或 extern 声明的对象。”

第二个,int y[10],使用自动存储持续时间,由 cppreference 定义为:“对象在封闭代码块的开头分配并在结尾释放。所有本地对象具有此存储持续时间,但声明为 static、extern 或 thread_local 的对象除外。”

第三个,int *z = new int[10],通常被称为动态内存分配。 应显式释放动态内存分配

关于c++ - 使用 memcpy() 后是否需要删除内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46871414/

相关文章:

c++ - 不直接使用字符串时的CreateProcess @Unhandled异常

java - java中如何使用Comparator对二维数组进行排序

c++ - 为什么bool和_Bool在内存中占用1个字节只能存储0或1?

java - 更改 Activity 时 Android 应用程序内存不足错误

C++ 对象在没有创建的情况下被销毁?

c++ - 模拟免费功能

c++ - QTestLib 是否可以在运行时显示它正在测试的 GUI?

javascript - JavaScript中数组的螺旋遍历

php - Laravel:从json类型字符串访问键值

java - 我应该关闭从适配器获取的光标吗?