C语言学习笔记04――程序在内存中的分布以及内存越界问题
C语言程序在内存中的分布: #include <stdio.h> char bss[1024*1024]; int main() { return 0;} 现在来看看程序的可执行文件大小 定义 char bss[1024*1024]={0};也是这个结果 可以看到 bss的大小并没有1MB 说明未初始化的全局变量不占程序文件的存储空间 #include<stdio.h> char data[1024*1024]={1}; int main() {return 0;} 运行结果: char* p = "12345" 如何使用堆内存: void *malloc(size_t size); void free(void *ptr); 举个例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { printf("%d\n",getpid()); //得到进程id char* p = malloc(sizeof(char)*10); char str1[7] = "123avbd"; char* str2 = "101"; printf("&p:%p\np:%p\n",&p,p); printf("str1:%p\nstr2:%p\n",str1