gpt4 book ai didi

c++ - 指向动态容器的指针是否持续存在?

转载 作者:行者123 更新时间:2023-11-28 00:11:05 25 4
gpt4 key购买 nike

我知道 vector 、列表、映射和集合等动态数据结构会自动在堆上分配它们的元素,因此如果数据结构被修改,我不能使用指向元素的指针并期望它保持有效。但是我可以指向结构本身并知道它始终有效吗?我会假设该结构在堆栈中有某种 anchor ,无论其元素分配在哪里,它总是具有相同的地址或其他东西......?

那么,我可以安全地使用 STL 动态容器做这样的事情吗?

int main()
{

std::set<int> s;
std::set<int>* s_ptr = &s;

for (int i = 0; i < 1000000; ++i)
{
s.insert(i);
}

std::cout << s_ptr->size() << std::endl;

}

在我的测试中,这确实有效。但是因为 UB,我不能依赖它。

最佳答案

您对指针的使用是安全的。只要 s 还活着,指针就有效。在这种情况下,s 将一直存活到函数结束。

关于c++ - 指向动态容器的指针是否持续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com