Kar*_*uru 3 c memory arrays programming-languages memory-management
考虑一下我的系统有内存,但它分散在不同的地方(碎片).没有四个连续的内存位置是免费的.在那种情况下,如果我用C语言声明一个大小为10的字符数组,会发生什么?
如果"我的系统有内存,但它分散在不同的地方(碎片化)"意味着,堆虚拟内存被分段,并且"声明一个大小为10的字符数组"意味着你在堆栈内存中创建大小为10的字符数组:
char str[10];
Run Code Online (Sandbox Code Playgroud)
,然后将成功创建数组.
如果"声明一个大小为10的字符数组"意味着你用malloc()分配内存(在堆中分配):
char *str2;
str2 = (char*) malloc(10 * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
,然后malloc()将返回NULL.