小标
2018-10-10
来源 :
阅读 1455
评论 0
摘要:本文主要向大家介绍了C/C++知识点之C语言 (内存) 四道经典题目,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言 (内存) 四道经典题目,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
1 void GetMemory(char *p)
2 {
3 p = (char *)malloc(100); "没有释放内存"
4 }
5 void Test(void)
6 {
7 char *str = NULL;
8 GetMemory(str);
9 strcpy(str, "hello world"); "str 指针没有任何变化(值传递),还是指向NULL,没有内存,对NULL的空间进行操作,编译器会报段错误"
10 printf(str);
11 }
12 请问运行Test函数会有什么样的结果?简述原因 .
13
14 char *GetMemory(void)
15 {
16 char p[] = "hello world"; "栈上的内存,程序结束内存就析构"。
17 return p;
18 }
19 void Test(void)
20 { "只有地址,没有内存,输出时乱码,看编译器的处理(有的编译器会报段错误)"
21 char *str = NULL;
22 str = GetMemory();
23 printf(str);
24 }
25 请问运行Test函数会有什么样的结果?简述原因
26
27 void GetMemory(char **p, int num)
28 {
29 *p = (char *)malloc(num);
30 }
31 void Test(void)
32 {
33 char *str = NULL;
34 GetMemory(&str, 100); "正常输出,但是内存没有释放,内存泄漏"。
35 strcpy(str, "hello");
36 printf(str);
37 }
38 请问运行Test函数会有什么样的结果?简述原因
39
40 void Test(void)
41 {
42 char *str = (char *) malloc(100);
43 strcpy(str, “hello”);
44 free(str);
45 if(str != NULL)
46 { "只有地址,没有内存,但是由于在同一个函数中,上一个地址中的内存可能还没有被其他程序占用,"
47 " 所以拷贝时不会出段错误,而且正常打印,但是程序结束时会报段错误"
48 strcpy(str, “world”);
49 printf(str);
50 }
51 }
52 请问运行Test函数会有什么样的结果?简述原因,应如何避免。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号