这有点牵强,但是下面的代码是否“安全”(即保证不会导致分段错误):
std::vector<int> vec(1); // Ensures that &vec[0] is valid
vec.reserve(100);
memset(&vec[0], 0x123, sizeof(int)*100); // Safe?
我知道这很丑陋-我只想知道它在技术上是否安全,不需要"漂亮"。 我猜它唯一的用途可能是忽略存储在给定索引之后的值。
注意!如何获取vector::reserve()分配的缓冲区地址?涵盖了相同的主题,但我更关心这是否安全以及在执行此操作时是否存在任何陷阱。
编辑:原始代码有误,已将原始 memcpy
替换为 memset
。