c - 为指针分配内存

标签 c pointers

我通过提供不同的输入在两个终端中调试程序,但特别是我在一个终端中看到了这一点

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/

相关文章:

C 可变参数函数 : need to keep multiple va_list but old ones are overwritten by latest one

c - 将字符串的第一个字节存储到另一个字符串中 : algorithm of LZW Compression

c - 我的代码中是否存在内存泄漏? (使用指针存储字符串)

c++ - 函数内的指针行为

无法在 C 中将结构指针作为函数参数传递

c - 拒绝与服务器的连接 C 套接字编程

c++ - 为什么 sizeof 运算符对数组产生不同的结果

c - 以下两种不同的将变量传递到函数的方法之间的区别

arrays - 在 Go 中,是否可以在不需要星号取消引用的情况下将变量分配给 someArray[someIndex]?

c - 在循环中动态分配结构内存 t 次而不是声明结构数组