我目前正在学习C++中的动态内存,并且在尝试完全理解和理解程序内存中的内存段时发现了许多麻烦.
所以我们有4个内存段:堆栈,堆,数据和代码.
首先,我想看看我是否掌握了它的基础
- 堆栈:一旦进入作用域,就像堆栈一样进行管理的内存段,在该段中为该作用域分配的内存有限,应包含有关该作用域的信息(变量等)
- 堆:一个无限制的动态内存段,当你在该段中分配一个内存时,它将不会被删除,因为你退出所使用的代码或函数的范围,它需要被你或一个gc删除(如果是再也无法到达了)
- 代码:包含需要由CPU执行的代码的内存段
- 数据:包含变量信息的内存段(int x - x代表内存单元0x0FA20F)
我的第一个问题是,我做对了吗?我真的不确定......
如果我没有把它弄好,我的问题是:
每个内存段用于什么?
其中关于变量的存储段信息,例如,
int x-x表示存储单元0x0FA20F的位置?
当使用递归时,当你从函数中调用一个函数并且仍然有代码留在该函数中执行时,那个代码会被保存在人们称之为堆栈的内容中,而这个代码是什么?常规的堆栈段?如果是这样意味着在堆栈中存储了需要在当前范围内执行的常规代码行?那么代码内存段用于什么?
我喜欢它,如果有人能够组织我脑海中现在的混乱,并向我解释每个记忆片段在提到我的问题时完全做了什么.
我最近安装了 python、ipython 和 pip,使用 pip 我安装了 socket 库,还有很多其他的,现在我无法在通过 cmd 运行 python 程序时导入 socket,但我可以使用 ipython,当我运行 ipython 时我导入套接字一切正常,现在我编写了一个简单的脚本,名为“tcp.py”,它包含的只是以下行
进口插座
Traceback (most recent call last):
File "C:\dir\desktop\tcp.py", line 1, in <module>
import socket
File "C:\dir\desktop\socket.py", line 1, in <module>
socket
NameError: name 'socket' is not defined
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?