一个关于malloc的面试题

2023-11-05

发表于1年前(2014-04-04 13:31)   阅读( 176) | 评论( 09人收藏此文章, 我要收藏
赞0

慕课网,程序员升职加薪神器,点击免费学习

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

?
1
2
3
4
5
6
7
8
9
10
11
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的正确写法应该是:

?
1
2
3
4
void GetMemory(char **p , int nlen)
{
    *p = (char*)malloc(nlen);
}



完整程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个关于malloc的面试题 的相关文章

  • javascript之数据遍历

    JavaScript之数据遍历 for循环 var a 沐水莲心 22 男 for var i 0 i
  • WIFI 信道 channel

    5GHz 信道划分 国内室内AP可用36 40 44 48 52 56 60 64 149 153 157 161 165等13个信道 2 4GHz 共有14个信道 国内可用1 13信道 不干扰的仅1 6 11
  • Linux多线程

    全文目录 线程概念 线程缺点 线程的如何看待进程内部的资源 进程vs线程 线程控制 pthread库 pthread t 线程创建 线程等待 线程分离 线程退出 总结 线程互斥 互斥量接口 互斥量实现原理 总结 线程安全与可重入 常见的线程
  • CMake应用:基础篇

    CMake是一个开源 跨平台的编译 测试和打包工具 它使用比较简单的语言描述编译 安装的过程 输出Makefile或者project文件 再去执行构建 在使用IDE开发软件的过程中 代码的编译和构建一般是使用IDE自带的编译工具和环境进行编
  • 什么是面向接口编程、面向过程编程、面向对象编程?

    1 什么是面向接口编程 IOP 面向接口编程 Interface Oriented Programming IOP 是一种编程思想 接口作为实体抽象出来的一种表现形式 用于抽离内部实现进行外部沟通 最终实现内部变动而不影响外部与其他实现交互
  • (毕业设计资料)基于STM32智能窗帘控制系统设计

    096 电路方案 基于STM32智能窗帘控制系统设计 基于STM32单片机的智能窗帘控制系统 该系统集蓝牙遥控 人声识别控制 空调红外遥控 24c02数据储存 433m遥控 热释电红外感应 温湿度检测以及光控为一体 并可根据需求设置窗帘开合
  • Java中的内存泄漏例子以及对应解决方案

    转自How Memory Leaks Happen in a Java Application 英语好的可以去原网站瞅瞅 1 什么是Java中的内存泄漏 内存泄漏的标准定义是当应用程序不再使用对象 但垃圾回收器无法将它们从工作内存中删除时发
  • 【上拉下拉功能】GPIO的上拉下拉功能说明

    GPIO的上拉下拉功能说明 2011 07 11 14 36 394人阅读 评论 0 收藏 举报 The port pull up register controls the pull up resister enable disable
  • 华为校招机试题-查找单入口空闲区域-2023年

    题目描述 给定一个 m x n 的矩阵 由若干字符 X 和 O 构成 X 表示该处已被占据 O 表示该处空闲 请找到最大的单入口空闲区域 解释 空闲区域是由连通的 O 组成的区域 位于边界的 O 可以构成入口 单入口空闲区域即有且只有一个位
  • 【华为OD机试】返回矩阵中非1的元素个数(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • UID卡、CUID卡、FUID卡的区别

    UID卡 国外称GEN1 所有区块可被重复读写 卡片ID可改且使用后门指令更改ID ID可被重复修改 响应后门指令 意味着可被使用后门指令检测是否为克隆卡的机器发现 CUID卡 国外称GEN2 所有区块可被重复读写 卡片ID可改且使用普通写
  • stm32 串口发送和接收

    串口发送 include stm32f10x h Device header include
  • HTML+CSS 旋转照片墙!源代码(简易动画干货快收藏!!)

    拿走请三连 并注明出处 新手上路 路过的大佬请多多指教 动画特效为11张照片 环绕着旋转 照片可自改添加 源代码中用到的照片未上传
  • 本地上传文件到FastDFS命令上传报错:ERROR - file: connection_pool.c, line: 142, connect to server 192.168.0.197:221

    root ubuntu etc fdfs usr bin fdfs upload file etc fdfs client conf etc a jpg 2019 12 03 11 38 14 ERROR file connection p
  • MySQL学习(十七):数据类型之文本字符串类型

    文本字符串类型 类型 值的长度 长度范围 占用的存储空间 CHAR M M 0 lt M lt 255 M个字节 VARCHAR M M 0 lt M lt 65535 实际长度 1个字节 TINYTEXT L 0 lt L lt 255
  • 如何使用BBP公式直接计算π的第n位

    使用BBP公式可以直接求得十六进制 的第n位而不需要计算前n位的数 讲道理 我认为是可以计算十进制的第n位的 毕竟其本身就能直接计算出十进制的 但我没试 其优点在于可以进行分布式计算 即将一个耗时的运算拆分成若干个运算单元在不同的机器上进行
  • 芯片可靠性与商规、工规、车规

    在芯片的国产化浪潮下 国产芯片的出货量和替代率近年来迅速飙升 按出货量比率看 消费电子领域 电源管理芯片和射频前端芯片国产替代率已超过70 工控通信领域 电源管理和信号链芯片国产替代率也超过20 汽车电子领域 电源管理和功率器件的国产替代率
  • 【OpenAI】私有框架代码生成实践

    作者 京东零售 牛晓光 根据现有调研和实践 由OpenAI提供的ChatGPT GPT 4模型和CodeX模型能够很好的理解和生成业界大多数编程语言的逻辑和代码 其中尤其擅长Python JavaScript TypeScript Ruby
  • Python 进程原理 —— 《餐厅里的故事》

    在说明进程之前引入几个概念 本文向你诠释 并行 并发 同步 异步 阻塞 非阻塞 进程等概念 如果不理解这几个概念 在学习进程过程中时刻都在给自己预设障碍 所以我痛定思痛 先了解进程工作原理 概念1 单道程序与多道程序 不在赘述单道程序的工作
  • AHP权重计算方法案例

    AHP权重计算方法案例 1 案例背景 公司要对网站用户行为进行追踪 以优化推荐系统算法 需要对已有的5项行为指标 为便于理解 此处展示5项 分配对应权重 需要我们数据部门给出权重建议 当然不能拍脑门 我以AHP层次分析法为理论基础设计了一套

随机推荐

  • 花30分钟,我用ChatGPT写了一篇2000字文章(内附实操过程)

    有了ChatGPT之后 于我来说 有两个十分明显的变化 1 人变的更懒 因为生活 工作中遇到大大小小的事情 都可以直接找ChatGPT来寻求答案 2 工作产出量更大 之前花一天 甚至更久才能写一篇原创内容 现在有了主题 框架之后 ChatG
  • 求生之路2在Win10下鼠标看不见要怎么解决?

    求生之路2是很多玩家都非常喜欢的一款恐怖生存类游戏 但是在升级win10系统后玩求生之路会遇到一些问题 如鼠标看不见 这就让操作变的很麻烦 其实这是由于系统鼠标设置问题到导致的 跟着小编操作可解决这个问题 修复步骤如下 1 按下WIN X
  • #If...Then...#Else Directives

    If Then Else Directives Conditionally compiles selected blocks of Visual Basic code If expression Then statements ElseIf
  • 算法:单调栈

    栈 先进后出 最好是找一些简单的数据用纸和笔模拟一下具体过程 清清楚楚地表现出来 理解一个比较难懂的程序最快的方式是对照着一个程序一步一步将过程模拟出来 那么就很容易理解整个程序的意思了 不要光看程序代码 不动笔 这样可能会耗很多时间并且最
  • FasterTransformer 安装

    第一 安装TensorRT FasterTransformer 支持cuda10 0 所以TensorRT也下cuda10 0对应版本 1 下载TensorRT https developer nvidia com nvidia tenso
  • Android中的Wifi框架知识点

    一 Android wifi框架图 Android WIFI系统引入了wpa supplicant 它的整个WIFI系统以wpa supplicant为核心来定义上层接口和下层驱动接口 Android WIFI主要分为六大层 分别是WiFi
  • TCP套接字网络编程实例(二)

    TCP套接字网络编程实例 二 采用多线程实现客户端和服务器的聊天功能 OK 上代码 1 客户端部分 文件 tcp client c 内容 利用TCP实现客户端和服务器的实时聊天 注 服务器的端口号及IP 客户端的端口号及IP的输入通过mai
  • angular2+修改环境变量,不用重新build部署

    转载文章链接 How to use environment variables to configure your Angular application without a rebuild 整体思路 在assets目录下添加js文件 获取
  • warning negative label/yolo标签出现负值?

    问题如上图所示 出现场景 图像增强后 xml文件转txt文件 解决方法1 无脑粗暴 一秒见效 直接把负值转成正值 不影响标注与训练结果 代码如下 import os def process files in folder folder pa
  • BLE低功耗的设置参数

    广播间隔 连接间隔 扫描间隔 扫描窗口 广播间隔 两个相邻广播事件之间的时间称为广播间隔 可以选择 20ms 10 28s 不等的间隔 通常 一个广播中的设备会每一秒广播一次 必须是 0 625ms 的整数倍 由于设备间的时钟会不同程度的漂
  • f12弹出debug_360浏览器网站按f12弹出新窗口解决办法

    为何有些网站在360浏览器中按f12弹出新窗口 而不是在当前页面右侧出现调试部分呢 对于网站开发人员来说 我们需要得到的是在当前页面出现调试结果 不管是本地测试文件还是已经上线的网站 这里成都seo小冬 总结了下面三点 一起来试试吧 1 切
  • Nali:一个离线查询 IP 地理信息和 CDN 提供商的终端利器

    什么是 Nali dig nslookup traceroute 等都是非常实用的网络调试工具 Nali 是一个可以自动解析这些工具 stdout 中的 IP 并附上所属 ISP 和地理信息 对这些已是瑞士军刀般的工具可谓如虎添翼 Nali
  • 力扣(LeetCode)每日一题 LCP 50. 宝石补给

    简单题 不用解释直接看代码 class Solution public int giveGem int gem int operations for int i 0 i
  • Qt笔记(六十)之Qt实现无边框圆角窗口

    一 前言 设置无边框窗口之后 就会显示直角的风格 有用户反馈说 看着太锐了 让我给换成圆角 看着舒服一点 楼主一开始想用Qss实现 发现实在不行 后边想着 估计只能用绘图事件来操作了 二 实现过程 1 实现窗口无边框效果 setWindow
  • java实现mysql数据库增删改查

    本文将介绍java实现数据库增删改查的操作方法定义的代码 包括statment和preparestatment两种模式 两种的区别可以参考别的文章 按需选用 例 getdata是statment的查询的方法 pgetdata是prepare
  • flutter获取验证码输入框组件

    代码 import package flutter material dart class ValidataInputBoxWidget extends StatefulWidget ValidataInputBoxWidget Key k
  • dedecms列表页上一页下一页翻页单独调用的方法

    本文实例讲述了dedecms列表页上一页下一页翻页单独调用的方法 分享给大家供大家参考 具体实现方法如下 在列表页单独调用上一页和下一页 以及首页 简单搞了一下 仅作上下翻页 主页类似 可自行添加 在模板中以 复制代码代码如下 dede p
  • c++11中的tuple(元组)

    转自 http www cnblogs com qicosmos p 3318070 html 这次要讲的内容是 c 11中的tuple 元组 tuple看似简单 其实它是简约而不简单 可以说它是c 11中一个既简单又复杂的东东 关于它简单
  • [深入研究4G/5G/6G专题-61]: 关键概念和常见问题之Cell, UE 上下文, RRC连接,PDU会话, ,SRB Bear, DRB Bear,Qos Flow,

    目录 第1章 协议栈与承载 1 1 LTE空口协议栈 1 2 5G 空口协议栈 第2章 L3关键数据对象的层次架构
  • 一个关于malloc的面试题

    发表于1年前 2014 04 04 13 31 阅读 176 评论 0 9人收藏此文章 我要收藏 赞0 慕课网 程序员升职加薪神器 点击免费学习 前两天看了一个关于malloc的面试题 题目是这样的 1 2 3 4 5