这两天查到了一个RAII用错的bug, 记录一下. 错误代码如下:
这段代码本意是使用宏封装读写锁, 利用RAII特性, 当作用域结束的时自动释放掉锁.
但宏中没写变量名, 成了一个未命名对象, 其生命周期是声明后立即释放, 未达到给代码块加锁的目的.
以下是验证代码:
当执行test_unnamed
时, 输出为:
当执行test_named
时, 输出为:
避免方法
VS下会提示C26444的警告
Published on 2019/02/28.
这两天查到了一个RAII用错的bug, 记录一下. 错误代码如下:
这段代码本意是使用宏封装读写锁, 利用RAII特性, 当作用域结束的时自动释放掉锁.
但宏中没写变量名, 成了一个未命名对象, 其生命周期是声明后立即释放, 未达到给代码块加锁的目的.
以下是验证代码:
当执行test_unnamed
时, 输出为:
当执行test_named
时, 输出为:
VS下会提示C26444的警告