本文主要是介绍代码区、文字常量区、全局静态区、栈区、堆区的内存空间分布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习结构体之后,就想着来看看栈上多个变量的地址的分配情况,是不是也有某种规则一个接一个挨着。不想发现连续的两个变量的地址并不连续,可以说分得很开,而且从高地址到低地址分配。
虽然并不知道系统(还是编译器? 谁告诉我下)为什么这么做,但索性写了个程序也看看其它区域是怎么分配地址的。
小代码如下,如果有错误,请留言,我会从心底里感谢你的。
#include <stdio.h>
#include <string.h>
#include <cstdlib>//打印整形数组
void printfarr(unsigned long *arr, size_t size){for (size_t i = 0; i < size; i++){printf("%x ", arr[i]);}printf("\n");
}//根据传入的数组arr,比较大小,在out上对应标上其大小的顺序值
//总觉得这个算顺序的办法好笨,谁有更好的麻烦贡献出来
void sx(unsigned long* arr, unsigned long *out, size_t size){memset(out, -1, size*sizeof(unsigned long));for (size_t i = 0; i < size; i++){ int min;for (size_t j = 0
这篇关于代码区、文字常量区、全局静态区、栈区、堆区的内存空间分布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!