Skip to content

Commit

Permalink
添加deallocate和destory不同解析
Browse files Browse the repository at this point in the history
  • Loading branch information
traviszeng committed Feb 27, 2019
1 parent 0a2fbf0 commit 1d0bc58
Showing 1 changed file with 39 additions and 12 deletions.
51 changes: 39 additions & 12 deletions STL/STL.md
Original file line number Diff line number Diff line change
Expand Up @@ -401,22 +401,22 @@ Example
#include <iostream>
#include <array>
int main ()
int main()
{
std::array<int,10> myarray;
unsigned int i;
std::array<int, 10> myarray;
unsigned int i;
// assign some values:
for(i=0; i<10; i++)
myarray[i] = i;
// assign some values:
for (i = 0; i<10; i++)
myarray[i] = i;
// print content
std::cout << "myarray contains:";
for(i=0; i<10; i++)
std::cout << ' ' << myarray[i];
std::cout << '\n';
// print content
std::cout << "myarray contains:";
for (i = 0; i<10; i++)
std::cout << ' ' << myarray.at(i);
std::cout << '\n';
return 0;
return 0;
}
```
Output
Expand Down Expand Up @@ -1608,6 +1608,33 @@ Output
```
The allocated array contains: 0 1 2 3 4
```

注意:deallocate和destory的关系:

deallocate实现的源码:

template <class T>
inline void _deallocate(T* buffer)
{
::operator delete(buffer); //为什么不用 delete [] ? ,operator delete 区别于 delete
//operator delete 是一个底层操作符
}

destory:

template <class T>
inline void _destory(T *ptr)
{
ptr->~T();
}

destory负责调用类型的析构函数,销毁相应内存上的内容(但销毁后内存地址仍保留)

deallocate负责释放内存(此时相应内存中的值在此之前应调用destory销毁,将内存地址返回给系统,代表这部分地址使用引用-1)




#### relational operators (vector)
#### swap (vector)
#### vector <bool>
Expand Down

0 comments on commit 1d0bc58

Please sign in to comment.