
在C/C++程序中,内存通常被划分为几个不同的区域,每个区域有不同的用途和管理方式。以下是常见的内存分区及其特点:
malloc、calloc、realloc、free等函数进行分配和释放。以下是一个简单的C程序,展示了不同类型的变量在内存中的分布:
#include <stdio.h>
#include <stdlib.h>
// 全局变量
int global_var = 10;
void function(int param) {
// 局部变量
int local_var = 20;
static int static_var = 30;
printf("global_var: %p\n", (void*)&global_var);
printf("param: %p\n", (void*)¶m);
printf("local_var: %p\n", (void*)&local_var);
printf("static_var: %p\n", (void*)&static_var);
// 动态分配内存
int *heap_var = (int *)malloc(sizeof(int));
*heap_var = 40;
printf("heap_var: %p\n", (void*)heap_var);
free(heap_var);
}
int main() {
int main_local_var = 50;
function(main_local_var);
return 0;
}global_var: 0x601040
param: 0x7ffc8b5a9a7c
local_var: 0x7ffc8b5a9a78
static_var: 0x601048
heap_var: 0x1d5f010global_var:存储在全局/静态数据区。param 和 local_var:存储在栈区。static_var:存储在全局/静态数据区。heap_var:存储在堆区。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。