#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int g_A = 10; //数据段 .rodata
int g_B = 20; //数据段 .data
static int g_C = 30; //数据段 .data
static int g_D; //BSS段 .bss
int g_E; //BSS段 .bss
char *p1; //BSS段 .bss
void main( )
{
int local_A; //栈
int local_B; //栈
const int local_C = 0; //栈, 可通过地址改变数值
static int local_D = 0; //数据段 .bss
static int local_E; //数据段 .bss
char *p3 = "123456"; //123456在数据段(.rodata),p3在栈上
p1 = (char *)malloc( 10 ); //堆,分配得来得10字节的区域在堆区
strcpy( p1, "123456" ); //123456{post.content}放在常量区,编译器可能会将它与p3所指向 的"123456"优化成一块
}
c语言内存分布
于 2023-02-26 16:53:37 首次发布