首页 > 其他分享 >避免函数形参为空指针

避免函数形参为空指针

时间:2024-07-17 16:21:16浏览次数:13  
标签:函数 int double pdPoint 形参为 printf pdTemp 指针 iDim

展示一个函数形参为空指针的隐患:

执行 第32行 代码时,相当于执行 double *pdPoint = pdTemp;,由于pdTemp = NULL,所以 pdPoint = NULL。

在然后 void Pointer(double *pdPoint, int iDim) 函数中对 pdPoint 赋了一块动态内存, 此时 pdPoint != NULL,

但是 pdPoint 和 pdTemp只是赋值关系,所以此时仍然 pdTemp = NULL,最后动态申请的内存没有被释放。

代码:

 1 void Pointer(double *pdPoint, int iDim)
 2 {
 3     int i=0;
 4     pdPoint = new double[iDim];
 5 
 6     memset(pdPoint, 0, sizeof(double)*iDim);
 7 
 8     for (i = 0; i < iDim; i++)
 9     {
10         printf("%.3f\t", pdPoint[i]);
11     }
12     printf("\n");
13 
14     for (i = 0; i < iDim; i++)
15     {
16         pdPoint[i] = i + i*0.1;
17     }
18 
19     for (i = 0; i < iDim; i++)
20     {
21         printf("%.3f\t", pdPoint[i]);
22     }
23     printf("\n");
24 }
25 
26 int main(void)
27 {
28     int iDim = 3;
29     double *pdTemp = NULL;
30 
31     printf("%p\n", pdTemp);
32     Pointer(pdTemp, iDim);
33 
34     printf("%p\n", pdTemp);
35     fflush(stdout);
36 
37     return 0;
38 }

运行结果:

 

标签:函数,int,double,pdPoint,形参为,printf,pdTemp,指针,iDim
From: https://www.cnblogs.com/y-z-h/p/18307677

相关文章

  • day1 二分查找(及其进阶)和移除元素的双指针法
    基础概念算法的单调性:问题的规模随着算法的推进不断缩减(如704中开始的查找区间是[lo,hi),随着循环的进行,问题规模确实在不断的缩小)算法的不变性:在初始状态下自然满足,当问题的有效规模缩减为0时,不变性应该随即等于正确性。(如704中开始的查找区间是[lo,hi),最终要么直接命中,要么......
  • C++ 智能指针动态内存简单测试
    代码示例,主要来自《C++Primer》,动态内存相关那章内容。#include<iostream>#include<memory>#include<string>namespace{//未初始化的智能指针,默认保存的空指针voiddef_null_sp_test();//不是唯一用户,复制一份新的考拷贝。voidsp_unique_copy_te......
  • Python,匿名函数lambda
    Python使用 lambda 来创建匿名函数。lambda函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式。是一个不需要使用def关键字定义的完整函数。lambda特点,匿名没有函数名称,也就是一窜代码。lambda格式,lambda参数:表达式1.lambda格式使用#......
  • C++(回调函数)
    目录1.使用函数指针2.使用函数对象(仿函数)3.使用std::function和std::bind4.小结回调函数是一种允许函数作为参数传递给另一个函数的机制。在C++中,回调函数常用于实现事件驱动编程、异步操作和可重用性等功能。C++中有多种实现回调函数的方法,包括使用函数指针、函数对象(仿函......
  • Hive自定义函数编写方法(含源代码解读,超详细,易理解)
    一、Hive自定义函数介绍        1.内置函数        Hive自带了一些函数。比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2.自定义函数        当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UD......
  • Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在Kotlin中,匿名函数和lambda表达式都是用于表示函数类型的匿名函数(即没有名字的函数)。虽然它们在某些情况下可以互换使用,但是它们在语法和使用场景上存在一些细微的......
  • C++ 重载运算符与重载函数:深入解析与实例
    引言在C++中,重载(Overloading)是一个强大的特性,它允许我们为函数或运算符提供多个定义,这些定义之间通过参数的数量、类型或顺序来区分。重载运算符和重载函数是C++面向对象编程中常见的实践,它们不仅增强了代码的可读性和易用性,还使得类能够模拟内置数据类型的行为。本文将深......
  • python:绘制对数函数的曲线
    《高等数学》同济大学出版:对数函数,e=2.718281828459...为自然常数编写 test_log_x.py 如下#-*-coding:utf-8-*-"""绘制对数函数y=log(x)和y=log2(x)的曲线"""importnumpyasnpfrommatplotlibimportpyplotasplt#用于正常显示中文标题,负号plt.......
  • 实时时钟、弱函数、json
    一、实时时钟时间戳(实时的时间【单位:s】):​ 使用"time.h"文件:​ mktime()——得到一个时间戳​ localtime() ——得到一个当前时间的结构体(包含:年-月-日时:分:秒)eg:time_ttimestamp=mktime(&utc_time);//得到一个时间戳(单位为秒)structtm*beijing_time=lo......
  • 2021 ICPC 网络赛 第二场 L Euler Function(势能线段树,欧拉函数,状态压缩)
    2021ICPC网络赛第二场LEulerFunction题意给定序列,定义两个操作\(l,r,x\)对区间\([l,r]\)的数乘\(x\)\(l,r\)求\(\sum\phi{a}_{i}\)思路注意欧拉函数的性质,若\(i\bmodp=0\),\(\phi(i*p)=p*\phi(i)\),否则\(\phi(i*p)=(p-1)*\phi(i)\)因为\(x,w\)的......