
VFS虚拟文件系统:VFS 提供了一个抽象的文件系统模型,包括文件、目录、文件属性等概念,使得应用程序可以通过通用的系统调用(如open、read、write等)来访问文件,而无需关心底层文件系统的类型,比如 ext4、NTFS、FAT32 等。这种设计使得操作系统更加灵活,能够支持多种文件系统,并且可以方便地扩展和添加新的文件系统 。
栈区: 由系统自己分配,存放局部变量、形参等。
共享库:存放动态链接的共享库。
堆区:由用户自己分配,通过malloc或者new来申请,通过free或delete来释放,一定要释放,否则会造成内存泄露。存放各种数据结果、对象、数组等。
.bss:存放未初始化的全局变量和静态量。
.data:存放已初始化的全局变量和静态量。
.rodata:存放常量字段和字符串,如
const int a = 42; // 整数常量
const double pi = 3.14159; // 浮点数常量
const char ch = 'A'; // 字符常量
const char myString[] = "Hello, World!"; // 字符数组表示的字符串
std::string cppString = "Hello, World!"; // C++ 字符串类
.txt:存放函数体的二进制代码
代码验证
#include <iostream>
using namespace std;
void max(int stack_a)
{
cout << "stack_a:" << &stack_a << endl;
return;
}
void min(double satck_b)
{
cout << "satck_b:" << &satck_b << endl;
return;
}
int bss;
int data = 10;
const int rodata = 9;
int main()
{
int *heap_p = (int *)malloc(sizeof(int));
int *heap_q = (int *)malloc(sizeof(int));
cout << "heap_p:" << heap_p << endl;
cout << "heap_q:" << heap_q << endl;
cout << "bss:" << &bss << endl;
cout << "data:" << &data << endl;
cout << "rodata:" << &rodata << endl;
min(6.0);
max(5);
// min(6.0);
cout << "预期顺序是:a>b>q>p>bss>data>rodata" << endl;
free(heap_p);
free(heap_q);
return 0;
}
输出结果:

本文介绍了VFS虚拟文件系统如何提供文件系统抽象,使程序对不同底层文件系统透明。同时讲解了栈区、共享库、堆区和静态存储区的功能及其在C++中的使用,以及内存管理的重要性。
998





