繁体   English   中英

内存受限系统中的数组

[英]Array in a memory-constrained system

考虑一下我的系统有内存,但它分散在不同的地方(碎片)。 没有四个连续的内存位置是免费的。 在那种情况下,如果我用C语言声明一个大小为10的字符数组,会发生什么?

如果“我的系统有内存,但它分散在不同的地方(碎片化)”意味着, 堆虚拟内存被分段,并且“声明一个大小为10的字符数组”意味着你在堆栈内存中创建大小为10的字符数组:

char str[10];

,然后将成功创建数组。

如果“声明一个大小为10的字符数组”意味着你用malloc()分配内存(在堆中分配):

char *str2;
str2 = (char*) malloc(10 * sizeof(char));

,然后malloc()将返回NULL。

如果所有的内存包括堆栈是支离破碎这样,你要么有一个编译器(或运行时系统),支持非连续堆,在这种情况下,它也可能是足够聪明来支持非连续阵列,或基本上所有你do(比如调用子例程)会导致堆栈溢出并导致程序崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM