C语言 (内存) 四道经典题目
void GetMemory(char *p)
{
p = (char *)malloc(); "没有释放内存"
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world"); "str 指针没有任何变化(值传递),还是指向NULL,没有内存,对NULL的空间进行操作,编译器会报段错误"
printf(str);
}
请问运行Test函数会有什么样的结果?简述原因 . char *GetMemory(void)
{
char p[] = "hello world"; "栈上的内存,程序结束内存就析构"。
return p;
}
void Test(void)
{ "只有地址,没有内存,输出时乱码,看编译器的处理(有的编译器会报段错误)"
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?简述原因 void GetMemory(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, ); "正常输出,但是内存没有释放,内存泄漏"。
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?简述原因 void Test(void)
{
char *str = (char *) malloc();
strcpy(str, “hello”);
free(str);
if(str != NULL)
{ "只有地址,没有内存,但是由于在同一个函数中,上一个地址中的内存可能还没有被其他程序占用,"
" 所以拷贝时不会出段错误,而且正常打印,但是程序结束时会报段错误"
strcpy(str, “world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?简述原因,应如何避免。
C语言 (内存) 四道经典题目的更多相关文章
- C语言内存对齐(2)
前两天参加了360测试实习生的笔试,碰到了一个有关c语言内存对齐的题目,回来后实现了一下,下面是代码: #include <stdio.h> #include <stdlib.h&g ...
- C语言18个经典问题答录
原文地址:转载:C语言18个经典问题答录作者:lloo 1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示"非法初始式" 云云. 答:这个声明是静态 ...
- C语言中的经典例题用javascript怎么解?(一)
C语言中的经典例题用javascript怎么解?(一) 一.1+2+3+……+100=? <script type="text/javascript"> ...
- C语言内存对齐详解
一.字节对齐基本概念 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型 ...
- 学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67
本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足 ...
- C语言内存对齐详解(2)
接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...
- C语言内存对齐详解(3)
接上一篇:C语言内存对齐详解(2) 在minix的stdarg.h文件中,定义了如下一个宏: /* Amount of space required in an argument list for a ...
- C语言内存地址基础
来源:http://blog.jobbole.com/44845/ 从计算机内存的角度思考C语言中的一切东东,是挺有帮助的.我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节.比方 ...
- C语言内存对齐原理
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这 ...
随机推荐
- [BZOJ1002](FJOI 2007) 轮状病毒
[题目描述] 给定n(N<=100),编程计算有多少个不同的n轮状病毒. [输入格式] 第一行有1个正整数n. [输出格式] 将编程计算出的不同的n轮状病毒数输出 [样例输入] 3 [样例输出] ...
- sqlserver 计算数据库时间差
介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数 SELECT datediff(yy,'2010-06-1 10:10',GETDATE ...
- JavaScrip数组去重--终极版
第一种 var arr = [1,2,3,4,1,2,4,5,6];console.log(arr); Array.prototype.unique = function() { var n = [] ...
- java使用HttpClient 发送get、pot请求
package eidolon.messageback.PostUtil; import java.io.BufferedReader; import java.io.IOException; imp ...
- python修改和获取进程名字:setproctitle
参考: https://pypi.org/project/setproctitle/
- iOS:iOS开发系列–打造自己的“美图秀秀”(中)
来源: KenshinCui 链接:http://www.cnblogs.com/kenshincui/p/3959951.html 其他状态设置 常用的图形上下文状态设置上面基本都用到了,我们不再一 ...
- xss编码小结
一.JS编码与HTML编码区分: HTML实体可以使用十进制与十六进制编码:javascript可以使用Unicode与八进制与十六进制进行编码. 二.编码原理区分: 三.编码与非编码 对于JS编码: ...
- mysql索引处理
1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍.例如,有3个 ...
- shell遍历文件夹并执行命令
背景: 有一个源码包里面包含很多子目录和makefile,打包后的压缩包太大,需要将make生成的所有二进制文件删除然后再打包. 需求: 因此,要求在制定目录的所有递归子目录中执行make clean ...
- centos6.8服务器配置之vsftpd配置
vsftpd: version 2.2.2一.安装:因对版本要求不高,所以采用yum安装 yum install -y vsftpdckconfig vsftpd on 二.配置: 1.建立ftp用户 ...