相关疑难解决方法(0)

迭代器失效规则

C++容器的迭代器失效规则是什么?

优选地以摘要列表格式.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ iterator c++-faq c++11 c++17

509
推荐指数
6
解决办法
11万
查看次数

对象销毁对于加密目的是否可靠?

作为此问题的后续部分,我正在想象一个存储敏感数据(如加密密钥)的类。为简化起见,假设不涉及继承。

struct Credential {
  std::array<uint8_t, 32> secretStuff;
  ~Credential() { memset_s(secretStuff.data(), 32, 0, 32); }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试确定是否可以保证运行此类型的对象的析构函数,或者是否需要做一些花哨的事情,例如使用分配器以确保擦除内存。我对抵御编译器优化的适应性很感兴趣,因此我正在寻找标准的章节,以确保无论如何我都会得到正确的行为。

在前面的问题中,已经确定static保证自动分配和存储中的对象可以运行其析构函数。我对static此案不感兴趣;就我而言,确保程序终止后,先前使用的内存内容不会泄漏是操作系统的职责。对于程序员故意破坏事物的情况,我也不感兴趣...毕竟,没有什么可说的是他们不能只复制数据。

假设您是一名编译器作者,并且想在遵守标准的同时打破它。您有什么办法可以避免调用析构函数(程序终止除外)?也许一些奇怪的异常处理行为?如果不允许您这样做,为什么不这样做呢?

c++ language-lawyer

7
推荐指数
1
解决办法
141
查看次数

标签 统计

c++ ×2

c++-faq ×1

c++11 ×1

c++17 ×1

iterator ×1

language-lawyer ×1