Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 释放智能指针中的内存_C++11_Memory Management_Smart Pointers - Fatal编程技术网

C++11 释放智能指针中的内存

C++11 释放智能指针中的内存,c++11,memory-management,smart-pointers,C++11,Memory Management,Smart Pointers,当我们使用动态分配的内存时,delete命令的用处是显而易见的——我们需要让程序知道指针处的内存不再需要,并且可以重新调整用途 C++11中的智能指针(例如unique_ptr)有一个成员函数,似乎用于类似的目的:release()。我认为使用智能指针的意义在于避免手动处理内存释放。在这种情况下,release()函数似乎毫无意义,为什么还要提供它呢 (双关语)unique\u ptr只有在内存超出范围或被分配了新指针时才会自动释放内存,但您可能希望在此之前释放内存(最明显的原因是优化内存使用)

当我们使用动态分配的内存时,
delete
命令的用处是显而易见的——我们需要让程序知道指针处的内存不再需要,并且可以重新调整用途

C++11中的智能指针(例如
unique_ptr
)有一个成员函数,似乎用于类似的目的:
release()
。我认为使用智能指针的意义在于避免手动处理内存释放。在这种情况下,
release()
函数似乎毫无意义,为什么还要提供它呢


(双关语)

unique\u ptr
只有在内存超出范围或被分配了新指针时才会自动释放内存,但您可能希望在此之前释放内存(最明显的原因是优化内存使用).

unique\u ptr
仅在内存超出范围或被分配了新指针时自动释放内存,但您可能希望在此之前释放内存(最明显的原因是优化内存使用).

unique\u ptr
仅在内存超出范围或被分配了新指针时自动释放内存,但您可能希望在此之前释放内存(最明显的原因是优化内存使用)<当您想要一个拥有堆分配对象的唯一实体时,可以使用code>unique_ptrs
unique_ptr::release
放弃所有权并返回原始指针。当您不再希望
unique\u ptr
拥有受管数据而不销毁对象时,可能会出现这样的情况—您可能希望调用一个传统API,该API接受一个普通指针并承担其所有权。或者,您可能希望您的接口接收一个
唯一的\u ptr
,但在实现中有许多
共享的\u ptr
可以访问它。因此,实现将
unique\u ptr
释放
,并将所有权转移到一个或多个
共享的
s。

unique\u ptr::release
并不等同于在托管指针上调用
delete
<当您想要一个拥有堆分配对象的唯一实体时,可以使用code>unique_ptr
s
unique_ptr::release
放弃所有权并返回原始指针。当您不再希望
unique\u ptr
拥有受管数据而不销毁对象时,可能会出现这样的情况—您可能希望调用一个传统API,该API接受一个普通指针并承担其所有权。或者,您可能希望您的接口接收一个
唯一的\u ptr
,但在实现中有许多
共享的\u ptr
可以访问它。因此,实现将
unique\u ptr
释放
,并将所有权转移到一个或多个
共享的
s。

unique\u ptr::release
并不等同于在托管指针上调用
delete
<当您想要一个拥有堆分配对象的唯一实体时,可以使用code>unique_ptr
s
unique_ptr::release
放弃所有权并返回原始指针。当您不再希望
unique\u ptr
拥有受管数据而不销毁对象时,可能会出现这样的情况—您可能希望调用一个传统API,该API接受一个普通指针并承担其所有权。或者,您可能希望您的接口接收一个
唯一的\u ptr
,但在实现中有许多
共享的\u ptr
可以访问它。因此,实现将
unique\u ptr
释放
,并将所有权转移到一个或多个
共享的
s。

unique\u ptr::release
并不等同于在托管指针上调用
delete
<当您想要一个拥有堆分配对象的唯一实体时,可以使用code>unique_ptr
s
unique_ptr::release
放弃所有权并返回原始指针。当您不再希望
unique\u ptr
拥有受管数据而不销毁对象时,可能会出现这样的情况—您可能希望调用一个传统API,该API接受一个普通指针并承担其所有权。或者,您可能希望您的接口接收一个
唯一的\u ptr
,但在实现中有许多
共享的\u ptr
可以访问它。所以实现将从代码< >代码> UNQuyJPPT<代码>和转移所有权到一个或多个代码>代码> SyddYPPTR <代码> S.< /P>好——C++有点新,我只在应用程序中使用智能指针,当它们超出范围时,它们永远不会传递内容并释放内存。对于C++ C++有点新的地方,我只使用智能指针,在它们从不传递内容和释放内存的情况下,如果它们超出了范围,那么,对于C++来说,我只是在应用程序中使用了智能指针,在它们不传递内容和释放内存的情况下,只要它们超出范围,就可以使用。-对于C++来说,有点新的东西,我只在应用程序中使用智能指针,当它们超出范围时,它们从不传递内容并释放内存。