存放程序的代码是以 二进制代码的形式存放在计算机或服务器上的文件中。这些代码文件具有特定的文件格式,如.java、.py、.cpp等。程序代码在存储器中以二进制形式存在,由地址确定其存放位置。存储器中的存储单元可以存放一串二进制码表示的信息,这些信息的总位数称为一个存储单元的字长。存储器由许多存储单元组成,按单元号顺序排列。
具体来说,程序代码主要存放在以下几个内存区域:
代码段(Code Segment/Text Segment):
也称为文本段,用于存放程序执行代码。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。在代码段中,还可能包含一些只读的常数变量,例如字符串常量等。
数据段(Data Segment):
用于存放全局变量和静态变量。数据段包含两个子段:
BSS段(Block Started by Symbol):通常是指用来存放程序中未初始化的全局变量的一块内存区域。
Data段:通常是指用来存放程序中已初始化的全局变量的一块内存区域。
堆(Heap):
由程序动态分配和收回的内存区域,用于存放动态分配的内存。堆上的内存分配和回收由程序员控制,如果不收回就会导致内存泄露。
栈(Stack):
用于存放函数调用栈和函数局部变量。栈中的内容在函数执行过程中有效,并由编译器负责分配和收回。栈的大小通常在程序运行前确定。
通过将这些代码和数据存储在不同的内存区域,操作系统能够更有效地管理程序的执行,并且程序员可以更方便地进行调试、修改和扩展。