我知道未初始化的局部变量是未定义的行为(UB),并且该值可能具有可能影响进一步操作的陷阱表示,但有时我想仅使用随机数进行可视化表示,并且不会在其他部分使用它们.例如,程序在视觉效果中设置具有随机颜色的东西,例如:
void updateEffect(){
for(int i=0;i<1000;i++){
int r;
int g;
int b;
star[i].setColor(r%255,g%255,b%255);
bool isVisible;
star[i].setVisible(isVisible);
}
}
Run Code Online (Sandbox Code Playgroud)
是不是比它快
void updateEffect(){
for(int i=0;i<1000;i++){
star[i].setColor(rand()%255,rand()%255,rand()%255);
star[i].setVisible(rand()%2==0?true:false);
}
}
Run Code Online (Sandbox Code Playgroud)
并且还比其他随机数发生器更快?
强烈建议在创建64位内核(对于x86_64平台)时,指示编译器不要使用用户空间ABI所执行的128字节红区.(对于GCC,编译器标志是-mno-red-zone
).
如果启用了内核,则内核不会是中断安全的.
但那是为什么呢?
在多任务系统中,当任何硬件产生对特定CPU的中断时,CPU可以执行以下任一情况,除非它已经在服务ISR:
想了解上述两种情况下中断处理程序使用哪个堆栈,为什么?
abi ×1
c ×1
c++ ×1
garbage ×1
linux ×1
linux-kernel ×1
red-zone ×1
stack ×1
top-halves ×1
x86-64 ×1