受到这个问题的启发。
假设在C++代码中我有一个有效的指针并正确地进行
至少在大多数实现中,它会保留值并且会存储与
标准是否保证指针将保留其值,还是允许该值更改?
假设在C++代码中我有一个有效的指针并正确地进行
delete
。根据C++标准,该指针将变为无效 (3.7.3.2/4 - 分配函数将使所有部分存储器都失效)。至少在大多数实现中,它会保留值并且会存储与
delete
之前完全相同的地址,但是使用该值是未定义的行为。标准是否保证指针将保留其值,还是允许该值更改?
delete
签名允许它访问指针,也就是说除了传递值之外还允许其他操作吗? - Rupdelete
之后使用指针(例如,尝试printf()
它)是未定义行为,因此用户甚至不能合法地读取指针并将其与原始值进行比较。 - sharptoothoperator delete
)来委托它的工作。而且这个关键字没有“签名”。 - Lightness Races in Orbit