我通过提供不同的输入在两个终端中调试程序,但特别是我在一个终端中看到了这一点
ins (ptr=0x0, key=1, upKey=0xbffff308, newnode=0xbffff30c)
在另一个终端
ins (ptr=0x0, key=1, upKey=0xbffff308, newnode=0xbffff30c)
ins函数在哪里
ins(struct node *ptr, int key, int *upKey,struct node **newnode)
如何将相同的内存位置分配给指针。我在两个不同的终端上运行相同的程序...使用不同的输入
最佳答案
你看的内存地址是虚拟地址。这些地址然后由处理器转换为物理地址。这是所有现代操作系统的基础。每个进程都认为它拥有整个地址空间(在 32 位机器的情况下为 4GB,在 64 位机器的情况下更多)。当进程访问尚未分配给它的内存时,CPU 会生成页面错误。然后,操作系统可以通过多种方式之一处理该无效内存访问;一种常见的方式是段错误。
关于c - 为指针分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4871192/