文档章节

一个关于malloc的面试题

m
 mettaworldpeace
发布于 2014/04/04 13:31
字数 282
阅读 898
收藏 9

前两天看了一个关于malloc的面试题,题目是这样的:

void GetMemory(char *p , int nlen)
{
    p = (char*)malloc(nlen);
}
void main()
{
    char* str=NULL;
    GetMemory(str , 11);
    strcpy(str, "hello world");
    printf(str);
}



对于这个问题,我第一眼看到的是,字符串长度的问题和malloc出来的内存块没有free的问题。字符串”hello world”在结尾包含一个’\0’ ,所以长度为12,而malloc出来的内存块必须要free掉,不然就会出现野指针。这两两个问题比较好看出来。

但是这都不是问题的关键,问题的关键在于函数的传值,我们要改变实参的值,传入的必须是引用类型和指针类型。

str也确实是一个指针,但是当我们需要改变这个指针的值的时候,我们必须传入str的地址即&str;所以GetMemory的正确写法应该是:

void GetMemory(char **p , int nlen)
{
    *p = (char*)malloc(nlen);
}



完整程序:

#include"stdio.h"
#include"string.h"
#include"stdlib.h"

void GetMemory(char **p , int nlen)
{
    *p = (char*)malloc(nlen);
}

Void main()
{
   char* str = NULL;
   GetMemory(&str , 128);
   strcpy(str , "hello world");
   printf(str);
   free(str);
}



© 著作权归作者所有

m
粉丝 0
博文 5
码字总数 1794
作品 0
武汉
私信 提问
[CareerCup] 13.10 Allocate a 2D Array 分配一个二维数组

13.10 Write a function in C called my2DAlloc which allocates a two-dimensional array. Minimize the number of calls to malloc and make sure that the memory is accessible by the n......

机器的心脏
2017/12/15
0
0
拿下这十道Python经典面试题,你离拿到offer不远了!

你们苦等的Python面试题出来了......... 试题:NO.01 1.python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时...

糖宝lsh
2018/08/18
46
0
C++笔试题(二)

题目 一、选择题(每题3分) 1.对Ap用new A(A)malloc(sizeof(A))赋值,如下叙述正确的是() A.malloc分配内存后会调用构造函数初始化,但new函数不会。 B.new分配内存后会调用构造函数...

u011729265
2013/11/10
0
0
跟涛哥一起学嵌入式 第05集:一道程序改错题,测出你的嵌入式功底

大家好,欢迎阅读《跟涛哥一起学嵌入式》第05集,我们今天讨论一下中断的基本概念。 中断,是嵌入式开发中经常使用的一个功能,也是嵌入式工程师必须要掌握的一个概念:CPU和外设通信时,一般...

宅学部落
2018/07/06
0
0
40th bit and logical operations

关于基础知识的面试题 这段时间下班后基本上花费一个小时在看CS-APP,这本书确实值得我们细读,如果你是一个准备找工作中的人,如果你把这本书好好看一遍后公司的笔试和面试应该是没有什么问题...

zkqian
2014/12/03
28
0

没有更多内容

加载失败,请刷新页面

加载更多

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
35分钟前
4
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
9
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
15
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.3K
25

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部