我正在开发一个无锁的共享变量类,我希望能够生成一个SIGSEGV错误,看看我的实现是否按照我的计划运行。我尝试过创建一个修改指针并读取100次的函数。然后我在两个线程中调用此函数,并让线程在我的程序中无限运行。这不会产生我想要的错误。我应该怎么做呢?
修改 我根本不处理段错误,但是如果我删除了锁,它们就会在我的程序中生成。我想使用无锁设计,因此我创建了一个使用CAS保持无锁的共享变量类。有没有办法,我可以有一段代码,将产生段错误,以便我可以使用我的类来测试它是否解决了问题?
答案 0 :(得分:11)
#include <signal.h>
raise(SIGSEGV);
会引起适当的信号。
答案 1 :(得分:5)
malloc
+ mprotect
+取消引用指针
答案 2 :(得分:2)
解除指向未分配内存的指针(至少在我的系统上):
int *a;
*a = 0;
答案 3 :(得分:1)
取消引用无效指针:
*((int*)0x8100000000000000) = 5;