cry*_*s17 3 malloc stl copy shallow-copy
我有一个关于在stl库中复制指针的问题.我说定义:
struct A{
int x;
}
std::map<int, const A*> map1;
然后我使用malloc使用来自堆的内存填充map1作为指向A的指针.
然后我做
std::map<int, const A*> map2 = map1;
对于map2中结构A的每个指针,std :: map是否执行指针的浅表副本,或者为每个指针从堆中分配新内存?
干杯
军刺
它只会复制指针.这意味着将制作浅拷贝而不是深拷贝.您可以使用简单的测试程序轻松检查实际行为:
int main() {
std::map<int, int*> map1;
map1[0] = new int(10);
std::map<int, int*> map2 = map1;
*(map2[0]) = 20;
// this must print 20 if a shallow copy is used
std::cout << *(map1[0]) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |