计算机等级考试二级C语言常见问题:第7章内存分配

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2011年11月10日

第 7 章 内存分配

问题列表:

7.1 为什么这段代码不行?
char *answer; printf("Type something:\n");
gets(answer); printf("You typed \"%s\"\n", answer);

7.2 我的strcat() 不行.我试了char *s1 = "Hello, "; char *s2 = "world!"; char *s3 = strcat(s1, s2); 但是我得到了奇怪的结果。

7.3 但是strcat 的手册页说它接受两个char * 型参数。我怎么知道(空间) 分配的事情呢?

7.4 我刚才试了这样的代码char *p; strcpy(p, "abc"); 而它运行正常?怎么回事?为什么它没有崩溃?

7.5 一个指针变量分配多少内存?

7.6 我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息

7.7 那么返回字符串或其它集合的争取方法是什么呢?

7.8 为什么在调用malloc() 时, 我得到“警告: 整数赋向指针需要类型转换”?

7.9 为什么有些代码小心地把malloc 返回的值转换为分配的指针类型。

7.10 在调用malloc() 的时候, 错误“不能把void * 转换为int *” 是什么意思?

7.11 我见到了这样的代码char *p = malloc(strlen(s) + 1); strcpy(p,s); 难道不应该是malloc((strlen(s) + 1) * sizeof(char))?

7.12 我如何动态分配数组?

7.13 我听说有的操作系统程序使用的时候才真正分配malloc 申请的内存。这合法吗?

7.14 我用一行这样的代码分配一个巨大的数组, 用于数字运算: double*array = malloc(300 * 300 * sizeof( double )); malloc() 并没有返回null, 但是程序运行得有些奇怪, 好像改写了某些内存, 或者malloc() 并没有分配我申请的那么多内存, 云云。

7.15 我的PC 有8 兆内存。为什么我只能分配640K 左右的内存?

7.16 我的程序总是崩溃, 显然在malloc 内部的某个地方。但是我看不出哪里有问题。是malloc() 有bug 吗?

7.17 动态分配的内存一旦释放之后你就不能再使用, 是吧?

7.18 为什么在调用free() 之后指针没有变空?使用(赋值, 比较) 释放之后的指针有多么不安全?

7.19 当我malloc() 为一个函数的局部指针分配内存时, 我还需要用free() 明确的释放吗?

7.20 我在分配一些结构, 它们包含指向其它动态分配的对象的指针。我在释放结构的时候, 还需要释放每一个下级指针吗?

7.21 我必须在程序退出之前释放分配的所有内存吗?

7.22 我有个程序分配了大量的内存, 然后又释放了。但是从操作系统看, 内存的占用率却并没有回去。

7.23 free() 怎么知道有多少字节需要释放?

7.24 那么我能否查询malloc 包, 可分配的最大块是多大?

7.25 向realloc() 的第一个参数传入空指针合法吗?你为什么要这样做?

7.26 calloc() 和malloc() 有什么区别?利用calloc 的零填充功能安全吗?

7.27 alloca() 是什么?为什么不提倡使用它

 


首页 1 2 3 尾页

相关文章