[英]Does “new char[]” need to be release resources manually?
For this: m_sFilename = new char [len+1];
为此:
m_sFilename = new char [len+1];
Should I call delete[] m_sFilename;
我应该调用
delete[] m_sFilename;
sometime? 什么时间?
And: 和:
should I use delete[] m_sFilename
or delete m_sFilename;
我应该使用
delete[] m_sFilename
还是delete m_sFilename;
? ?
Does "new char[]" need to be release resouces manually?
“new char []”是否需要手动释放资源?
Yes. 是。
For this:
m_sFilename = new char [len+1];
为此:
m_sFilename = new char [len+1];
Should I calldelete[] m_sFilename;
我应该调用
delete[] m_sFilename;
sometime?什么时间?
Yes. 是。
Should I use
delete[] m_sFilename
ordelete m_sFilename;
我应该使用
delete[] m_sFilename
还是delete m_sFilename;
??
delete[]
. delete[]
。
But you should actually use std::string
, which does all this for you, and is free. 但是,你应该实际使用
std::string
,这所有的这一切对你来说,是免费的。
Yes, if you don't want the memory allocated by the new[]
to leak, you should delete[]
it when you're done using that memory. 是的,如果您不希望
new[]
分配的内存泄漏,则在使用该内存时应delete[]
。
To avoid having to keep track of that memory, I recommend you use std::string
or std::vector
instead. 为了避免跟踪内存,我建议您使用
std::string
或std::vector
。
是的,但是使用std::string
来存储m_sFilename
- 它几乎在所有方面都更好。
For native data types, and user-defined data types not having destructors using delete
or delete[]
would mean the same. 对于本机数据类型,没有使用
delete
或delete[]
析构函数的用户定义数据类型意味着相同。 The underlying heap manager would free all of the memory. 底层堆管理器将释放所有内存。 But calling scaler
delete
over a vector new ( new[]
) will not make all destructors to be called. 但是在向量new(
new[]
)上调用scaler delete
不会使所有析构函数都被调用。 Destructor will be called only once for the very first object. 对于第一个对象,析构函数只会被调用一次。
The behavior given above is compiler/heap-manager (which is handling new
and delete
) dependent. 上面给出的行为是依赖于编译器/堆管理器(处理
new
和delete
)。 For better portability use scaler delete for scaler new and vector delete ( delete[]
) for vector new
. 为了更好的可移植性,使用scaler delete for scaler new和vector delete(
delete[]
)for vector new
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.