void *ptr;
*(int*) ptr=12;
在此之后,我不明白为什么&ptr
会给我运行时错误。虽然当然运行良好ptr
。*ptr
void *ptr;
ptr
指向哪里?我敢打赌,去街上的咖啡店。或者甚至可能是某种虫洞!
*(int*) ptr = 12;
因此,您将一个指向谁知道什么的 void 指针转换为指向 int 的指针,然后取消引用它以为其分配整数 12。这将覆盖内存中的一些随机位置。如果幸运的话,程序不会崩溃。如果你不走运,你的电脑会爆炸。
因此,总结和改写您的问题,您是在问我们:“嗯,我正在取消引用一个我尚未初始化的指针,并指向谁知道在哪里。为什么我的程序会崩溃? ”我说得对吗?
首先,您创建一个指向随机地址的指针
void *ptr;
然后,您尝试将值 12 存储到导致未定义行为的随机地址,因为您没有为ptr