指针笔试题(一)

2023-11-14

#include <iostream>
void GetMemory(char *p,int num)
{
 p=(char *)malloc(sizeof(char)*num);
}
int main()
{
  char *str=NULL;
  GetMemory(str,100);
  strcpy(str,"hello");
  return 0;

}

注:p申请了新内存,只是把p所指的内存地址改变了,但是str丝毫未变。

所以每次GetMemory就会申请一块内存,但申请的内存却不能有效释放,结果是内存一直被独占,最终造成内存泄漏。


变形一:

#include <iostream>
using namespace std;
void GetMemory(char **p,int num)
{
 *p=(char *)malloc(sizeof(char)*num);
}
int main()
{
  char *str=NULL;
  GetMemory(&str,100);
  strcpy(str,"hello");
  return 0;
}

注:传指向指针的指针,传str的地址给函数GetMemory,就行了。

*str      str      &str   

h       hello   0x22f7c

字符串某一字符的值     字符串的值   字符串的地址值  


再变形:

#include <iostream>
using namespace std;
char *GetMemory(char *p,int num)
{
 p=(char *)malloc(sizeof(char)*num);
 return p;
}
int main()
{
  char *str=NULL;
  str=GetMemory(str,100);
  strcpy(str,"hello");
  cout<<str<<endl;
  return 0;
}

注:用函数返回值来传递动态内存。


#include <iostream>
using namespace std;
void GetMemory(int *z)
{
*z=5;
}
int main()
{
int v;
GetMemory(&v);
cout<<v<<endl;
return 0;
}

注:通过传地址,GetMemory函数给地址指向的值赋值,可以实现。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指针笔试题(一) 的相关文章

  • Vc/MFC中自定义消息及其PostMessage触发使用

    http blog csdn net ztz0223 article details 2058402 http blog csdn net a8082649 article details 7733527 http bbs csdn net
  • std::nth_element bug引起的crash问题

    1 源码 auto less compare const MirroringGroup mg1 const MirroringGroup mg2 gt bool return mg1 usage lt mg2 usage std nth e
  • C++工程师复习题

    一 auto ptr 类使用必须满足下列限制 1 不要使用 auto ptr 对象保存指向静态分配对象的指针 2 不要使用两个 auto ptrs 对象指向同一对象 3 不要使用 auto ptr 对象保存指向动态分配数组的指针 4 不要将
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • 【C++】VS code如何配置使用C++(手把手教学)

    博 主 米码收割机 技 能 C Python语言 公众号 测试开发自动化 获取源码 商业合作 荣 誉 阿里云博客专家博主 51CTO技术博主 专 注 专注主流机器人 人工智能等相关领域的开发 测试技术 VS code如何配置使用C 手把手教
  • BP学习算法-构建三层神经网络

    引 人工神经网络 Artificial Neural Networks 简写为ANNs 也简称为神经网络 NNs 或称作连接模型 Connection Model 是一种模仿动物神经网络行为特征 进行分布式并行信息处理的算法数学模型 这种网
  • 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)<转>

    干货 Chrome插件 扩展 开发全攻略 不点进来看看你肯定后悔 写在前面 我花了将近一个多月的时间断断续续写下这篇博文 并精心写下完整demo 写博客的辛苦大家懂的 所以转载务必保留出处 本文所有涉及到的大部分代码均在这个demo里面 h
  • LeetCode题目笔记——17.19消失的两个数字

    文章目录 题目描述 题目难度 困难 方法一 暴力 代码 代码优化 方法二 数学方法 代码 总结 题目描述 题目直达 题目难度 困难 方法一 暴力 虽然题目说你能在 O N 时间内只用 O 1 的空间找到它们吗 但是也没有限制我们不能用暴力
  • 值得学习与推荐的c/c++框架和函数库

    这几天不上班 翻翻Evernote中记录的一些笔记 刚好有时间把记录的一些好玩链接转载一下 这篇文章里提到的很多库都用过 尤其是图像处理相关库 尤其是opencv及cximage 当时做图像算法时 很多算法就是从上面找来 然后自己修改的 比
  • floor(),ceil()函数

    地板 天花板函数 均包含在math h中 意思分别为 返回不大于形参的最小整数和不小于形参的最大整数 include
  • C++:指向类的成员的指针

    引 想必接触过C的朋友们对C语言中指针的概念已经有了深入的了解 如果初步进行了解的朋友可以看一下 C语言基础学习笔记 指针展开来讲的基本知识点包括 指针的概念 指针的定义和初始化及简单使用 指针函数和函数指针 有关指针函数和函数指针的内容上
  • C++学习笔记12:输入输出流实例整理(文本文件读写,二进制文件读写,一组数据的文件读写,随机访问文件实例

    这也太难记了555老阔疼 文件读写示例 include
  • Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance we ve been making all of our data members public in order to simplify the example
  • 检查内存泄露

    自己编写的视频处理程序出现了一个问题 每帧的运行时间随着运行时间在不断增长 很大可能是出现了内存泄露 于是学习了一些查看内存泄露的方法 做了两种尝试 一是VS自带的DEBUG下的检测 view pl html view plain copy
  • Java反序列化漏洞-CC1利用链分析

    文章目录 一 前置知识 1 反射 2 Commons Collections是什么 3 环境准备 二 分析利用链 1 Transform
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加

随机推荐

  • 个人对智能家居平台选择的思考

    本人之前开发过不少MicroPython程序 其中涉及到自动化以及局域网控制思路 也可以作为智能家居的实现方式 而NodeMCU ESPHome的方案具有方便添加硬件 容易更新程序和容量占用小的优势 本人也查看过相关教程后感觉部署ESPHo
  • 滤波器的主要参数

    一 3dB带宽定义和理解 3dB带宽指幅值等于最大值的二分之根号二倍时对应的频带宽度 幅值的平方即为功率 平方后变为1 2倍 在对数坐标中就是 3dB的位置了 也就是半功率点了 对应的带宽就是功率在减少至其一半以前的频带宽度 表示在该带宽内
  • 面试题亲身经历

    1 什么是浅拷贝和深拷贝有什么区别 1 浅拷贝只是复制了对象的引用地址 两个对象指向同一个内存地址 所以修改其中任意的值 另一个值都会随之变化 这就是浅拷贝 例 assign 2 深拷贝是将对象及值复制过来 两个对象修改其中任意的值另一个值
  • PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端

    比特填充法的具体做法是 在发送端 当一串比特流尚未加上标志字段时 先用硬件扫描整个帧 只要发现5个连续1 则立即填入一个0 因此经过这种零比特填充后的数据 就可以保证不会出现6个连续1 在接收一个帧时 先找到F字段以确定帧的边界 接着再用硬
  • ADIDAS阿里纳斯励志广告语

    系列文章目录 精选优美英文短文1 Dear Basketball 亲爱的篮球 精选优美英文短文2 Here s to the Crazy Ones 致疯狂的人 我祝你不幸并痛苦 约翰 罗伯茨毕业致辞 亲爱的波特兰 CJ麦科勒姆告别信 Hi
  • 你现在是一名博主,你要写关于chatgpt的文章,有哪些独特见解,写500字

    作为一名 AI 模型 ChatGPT 的独特之处在于它能够生成高质量的文本内容 并且具有很强的语言理解能力 首先 ChatGPT 是一种基于 Transformer 架构的语言模型 它通过大量的训练数据学习了语言的知识和结构 这使得它能够生
  • 运放积分器为什么要在电容两端并联一个电阻,阻值怎么计算

    本文摘自 新概念模拟电路 对于积分电路 在实际应用中 因为存在输入失调电压 输入偏置电流 会导致会有一个持续电流流过反馈电容 使电容上的电压累积增加或者减小 最终达到最大输出电压 上图很好的解释了给电容充电的原因 为了避免这种现象 一般在电
  • LVGL V8之flex布局item反序排列

    flex布局实现 static void lv example flex 4 void lv obj t cont lv obj create lv scr act 当前活动界面上创建obj对象 lv obj set size cont 3
  • 说说SFINAE

    文章目录 SFINAE简介 SFINAE的一个例子 使用C 11进行代码简化 对于c 11代码的解说 大后天就是除夕了 牛年将过 虎年马上来了 以一篇关于C 的非常小众的文章作为牛年的结尾 若有讲的不清楚或讲错的地方欢迎大家留言指出来 为什
  • tcl加载tcom扩展包的一个实例

    函数名 readconfig 输入参数 无 返回参数 返回一个列表 proc readconfig package require tcom 创建com实例 set excel tcom ref createobj Excel Applic
  • 服务器启动显示message,DNS服务器中的message日志出现一些信息,看不懂,请大家帮我看看!!...

    DNS服务器中的message日志出现一些信息 看不懂 请大家帮我看看 2012 01 03 00 34 46 标签 服务器 信息 message 杂谈 DNS服务器中的message日志出现一些信息 看不懂 请大家帮我看看 主要是发现DN
  • flutter iOS 缺少通知权限,缺少位置权限

    App Store Connect 亲爱的开发者 我们发现了一个或多个问题与您的应用程序 hayya附近的朋友Chat Meet 1 0 3 1 最近的交付 您的交付是成功的 但您可能希望在您的下一次交付纠正以下问题 ITMS 90078
  • docker问题笔记--前端容器更新失败

    问题描述 情况是这样的 今天由于项目需要 更新了前端容器 但是重启之后发现还是旧的前端 一时间有点迷惑 我的更新方式是为了图省事 并没有用新的前端镜像去重新起一个容器 而是直接用dist文件夹内容替换前端容器中的frontend文件夹内容
  • 在vue项目中引入jssdk所遇到的各种问题

    由于在最近的项目中 需要用到扫一扫二维码签到的功能 在纯H5的页面中要实现这个是不太可能的 所以考虑用jssdk或者混合开发 由于没有微信公众号和混合开发的经验 混合开发不太现实 公司没有考虑这个 而jssdk有其他公众号平台的公司配合 所
  • 封装HashMap加入URLdecoder解码器,防注入

    其中URLDecoder decode有个好处 就是防止 sql注入 当然对其他字符无效了 当在input输入用户名时候 10001 经过后台先获取 并解码 会报错 package test import java io Unsupport
  • 51单片机矩阵键盘

    目录 前言 一 矩阵键盘扫描 二 LCD1602显示矩阵键盘键值 三 趣味小项目 密码锁 总结 前言 矩阵键盘的原理很浅显易懂 不涉及任何寄存器 就是纯线路连接 一 矩阵键盘扫描 矩阵键盘的内部接线图如下 不难看出其组成就是多个独立按键彼此
  • vue.js使用webpack发布,部署到服务器上之后如何在浏览器中查看到vue文件源码

    webpack vue 2 0打包发布之后 将发布的文件部署到服务器中之后 浏览器中访问的时候会出现一个webpack文件夹 里边会显示vue文件源码 如果想让vue源文件显示出来 可以在config index js 中 build 下的
  • 利用sqlmap进行post注入学习笔记

    了解sqlmap sqlmap是一款开源 功能强大的自动化SQL注入工具 支持Access MySQL Oracle SQL Server DB2等多种数据库 支持get post cookie注入 支持基于布尔的盲注 基于时间的盲注 错误
  • Mac上安装dlib的一堆坑

    Failed to build dlib ERROR Could not build wheels for dlib which is required to install pyproject toml based projects 主要
  • 指针笔试题(一)

    include