以下两种情况:哪个占的空间更大些?
以下两种情况:
(1)new一个10个整型的数组
(2)分10次new一个整型的变量
哪个占的空间更大些?
为什么?
这是一道面试题,如果没有可讨论的必要性的话,请勿拍砖,还是请大家各抒己见
[解决办法]
第二次大。
crt 和api都会记录 内存分配情况的。
[解决办法]
#include <stdio.h>#include <stdlib.h>intmain(int argc, char *argv[]){ int i; int *ptr[10], *next; for (i = 0; i < 10; i++) { ptr[i] = malloc(sizeof(int)); printf("%p\n", ptr[i]); } next = malloc(sizeof(int)); printf("%p\n", next); printf("%d\n", (int)(next - ptr[0])); for (i = 0; i < 10; i++) { free(ptr[i]); } printf("\n"); ptr[0] = malloc(sizeof(int) * 10); next = malloc(sizeof(int)); printf("%p\n", ptr[0]); printf("%p\n", next); printf("%d\n", (int)(next - ptr[0])); return 0;}$ ./malloc_demo0x282010880x2820108c0x282010900x282010940x282010980x2820109c0x282010a00x282010a40x282010a80x282010ac0x282010b0100x282030400x28201088-2030
[解决办法]
因为内存是分页的,每页有固定的大小,就像一张纸,你写了90%的字,现在又有一篇相同的文章要写,只能写在新的一张,这个是cpu调度的,根据最小或者最大最优之类的,这样就会有10%的用不了。极限的如果一页纸只剩一个字的空间,那么这个字就是碎片。