c++: volatile遇到类的非默认构造,一下就把栈给爆掉了
// vs2022, c++ 14,
struct volatileB
{
public:
int a;
char m[0x300000];
volatile int va = 0;
};
struct volatileA
{
volatileB vbb{ 1 };
};
int main()
{
std::cout << "Hello World!\n";
// 即使是用new在堆上分配
// volatileA的构造函数,仍然需要使用超过其结构大小的栈
volatileA* va = new volatileA;
getchar();
}
相关推荐
C++中volatile关键字及常见的误解总结
主要给大家介绍了关于C++中volatile关键字及常见的误解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C++中volatile和mutable关键字用法详解
主要介绍了C++中volatile和mutable关键字用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C++中const、volatile、mutable使用方法小结
主要介绍了C++中const、volatile、mutable使用方法小结,需要的朋友可以参考下
聊聊C++的mutable和volatile
C++中修饰数据可变的关键字有三个:const、volatile和mutable。const比较好理解,表示其修饰的内容不可改变(至少编译期不可改变),而volatile和mutable恰好相反,指示数据总是可变的。mutable和volatile均可以和const搭配使用,但两者在使用上有比较大差别。 mutable mutable只能作用在类成员上,指示其数据总是可变的。不能和const 同时修饰一个成员,但能配合使用:const修饰的方法中,mutable修饰的成员数据可以发生改变,除此之外不应该对类/对象带来副作用。 考虑一个mutable的使用场景:呼叫系统中存有司机(Driver)
C++中volatile关键字的使用详解以及常见的误解
为什么使用volatile ? C/C++中的 volatile 关键字 和const对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是BS在“The C++ Programming Language”对volatile修饰词的解释: A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.


