Using New and Delete to manage memory directly (new header)

1.Initialization with parentheses and curly braces.

int *pi = new int(1024);
string *ps = new string(10, '9');
vector<int> *pv = new vector<int>{0,1,2,3,4,5,6,7,8,9};
</int></int>

2.Difference default initialization between int and string.

  • pi points to a dynamically allocated, unamed, uninitialized int.
string *ps = new string;  // default initialized to the empty string.

int *pi = new int;  // default initialized; *pi is undefine.

3.We can use auto only with a single initializer inside parentheses.

auto p1 = new auto(obj);  // p points to an object of the type of obj.

                          // that object is initialized from obj.

auto p2 = new auto{a, b, c};  // error:must use parentheses for the initializer.

4.use new to allocate const objects.

  • A dynamically allocated const object must be initialized.

5.If new is unable to allocate the requested storage:

  • It throws an exception of type bad_alloc.

  • Using new (nothrow) to avod throwing an exception, and returns a null ptr.

int *p2 = new (nothrow) int;  // if allocation fails, new returns a null ptr.

1.A delete expression takes a pointer to the object we want to free:

  • must point to a dynamically allocated obj or be null.(otherwise undefined)

2.Although the value of a const obj cannot be modified, the obj itself can be destroyed.

const int *pi = new const int(1024);
delete pi;  // ok: delete a const obj.

  1. Set p to nullptr to provide only limited protections.

  2. Avoiding dereference dangling ptr to make system crash.

int *p(new int(42));  // p points to dynamic memory.

auto q = p;  // p and q point to the same memory.

delete p;  // invalidates both p and q.

p = nullptr;  // indicates that p is no longer bound to an obj.

Original: https://www.cnblogs.com/Dy2MoRaw/p/15861509.html
Author: Dy2MoRaw
Title: Using New and Delete to manage memory directly (new header)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583812/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球