如何调用返回后删除[]内存
How to delete[] memory after return has been called
我有一个代表矩阵的类,并且在矩阵上进行了多个操作。我试图将*
操作员超载到乘以两个矩阵。
matrix matrix::operator* (matrix param) {
if(n!=param.n){
matrix blah;
return blah;}
matrix temp(n,0);
temp.user_matrix=mult(param.user_matrix);
return temp;}
矩阵都是正方形的,所以第一部分只是检查它们的大小相同。这有效,但是在返回另一个矩阵对象后,我应该如何删除温度矩阵?
您不应该。它会自动销毁。
您应该仅使用new
分配的delete
对象。
通常使用RAW new
和delete
在现代C 中皱眉。查看std::unique_ptr
和std::shared_ptr
的替代方案。(在您的示例中不需要它们)
" temp"是一个局部变量,范围为您的功能,无需释放它的内存。它使用的内存在堆栈上,因此它是由函数后缀自动"释放"的(构成返回语句的基础代码)。
void foo() {
int temp = 5;
return temp + temp;
}
;; x86 ASSEMBLY (NASM/FASM syntax)
foo:
SUB esp, 4 ;; <-- local memory for temp variable
MOV [esp], 5 ;; temp = 5
MOV eax, [esp] ;; eax = 5 (eax is the return-value register)
ADD eax, eax ;; 5 + 5
ADD esp, 4 ;; <-- "free" local memory for temp variable
RETN
相关文章:
- 在c++中删除内存失败
- delete[]有问题,如何部分删除内存
- 在这种情况下,我必须删除内存吗?
- STD分配器是否会在堆上动态分配内存?它可以安全地删除内存吗?
- 我可以在使用 winsoc 发送缓冲区后删除内存吗?
- 最好的方法是删除内存泄漏
- com,删除内存,而不是调用版本()
- 如何调用返回后删除[]内存
- 删除内存空间后,指针的值保持不变还是更改?对象内容是否将被更改
- unique_ptr的矢量未被完全删除(内存泄漏)
- 在析构函数中安全地删除内存
- (C++) list.error 方法和使用指针删除内存
- 为结构C++中的指针分配和删除内存
- 正在读取指向已删除内存未定义行为的指针
- 何时会在单一实例中删除内存
- 删除内存时遇到困难
- 在 go 中删除内存
- 在C++中使用智能指针分配和删除内存的有效方法
- Cpp删除内存
- 手动调用析构函数后如何删除内存