我试图将一个数组的内容复制到另一个数组,但仅限于使用 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/