社区
C++ 语言
帖子详情
把局部变量地址作为参数传递是否有风险!
心留
2017-08-06 02:42:07
把局部变量地址作为参数传递是否有风险
举例
long fun(long * lp)
{
( * lp)+=5;
return(0);
}
long main()
{
long num=0;
fun(&num);
return(num);
}
num 位局部变量,把他的地址作为参数调用另外一个函数进行处理,
目的是得到num的处理后的结果。
这样是否会因为num是局部变量二存在风险?
...全文
1415
3
打赏
收藏
把局部变量地址作为参数传递是否有风险!
把局部变量地址作为参数传递是否有风险 举例 long fun(long * lp) { ( * lp)+=5; return(0); } long main() { long num=0; fun(&num); return(num); } num 位局部变量,把他的地址作为参数调用另外一个函数进行处理, 目的是得到num的处理后的结果。 这样是否会因为num是局部变量二存在风险?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jena_wy
2017-08-06
打赏
举报
回复
函数修改值就是这样传的!
srhouyu
2017-08-06
打赏
举报
回复
不存在风险。Windows API大把这样的操作。把局部变量的地址作为返回值返回才会危险。
真相重于对错
2017-08-06
打赏
举报
回复
把地址作为参数,返回后地址不变, 把值作为参数,返回后值不变
详解 C 语言函数返回值:返回
局部变量
地址
的
风险
与正确处理方案
在 C 语言中,函数返回
局部变量
的
地址
是一种常见的编程错误,会导致未定义行为。
局部变量
在函数调用结束后,其内存空间会被释放,返回的
地址
指向无效内存区域。后续访问该
地址
可能导致程序崩溃或数据错误。静态变量的生命周期贯穿程序全程,但其值会被后续调用覆盖,且多线程环境下不安全。在堆上分配内存,函数返回堆内存
地址
。调用者需负责释放内存,避免内存泄漏。对于小型结构体,直接返回副本比返回指针更安全,避免内存管理问题。让调用者提供存储空间,通过指针
参数传递
结果,避免
地址
返回问题。
全局变量与
局部变量
在函数传参时的应用
局部变量
在函数结束之后会进行退栈,即该变量的内存空间被操作系统进行回收,该内存空间便不再属于本程序。 如: void fun1(int *var){ printf("%d",*var); } void fun2(){ int a = 10; fun1(&a); } fun2函数中的变量a属于
局部变量
,将a的
地址
值传入fun1函数,这样,在函数fun2结束之后,变量a的内存空间即&
使用pthread_create创建线程时,避免将
局部变量
的
地址
作为线程函数的
参数传递
创建线程时,避免将临时变量的
地址
作为线程函数的
参数传递
STM32 MAC
地址
生成函数深度解析:
参数传递
与内存管理
指针参数的本质中的参数不是简单的"传入变量",而是接收内存
地址
,允许函数直接操作调用方的内存空间。生命周期管理函数内部定义的
局部变量
在函数返回时被销毁,而通过指针操作的内存生命周期由调用方控制。嵌入式开发实践为网络设备生成唯一MAC
地址
是基础任务正确使用指针
参数传递
结果确保
地址
唯一性和格式合规平衡安全性与性能需求在STM32开发中,理解指针和内存管理是掌握嵌入式系统的关键。通过本文分析,您不仅解决了MAC生成的疑问,更掌握了C语言核心编程技术,为开发复杂嵌入式系统奠定了坚实基础。
有关java的函数调用返回值的问题和
参数传递
问题
这几天在项目里面碰到了一个很恼火的问题,是关于函数的传递值和返回值的问题 现描述下问题所在:1.我在一个类A中有个容器类,想要想要把初始化延迟到其他类中去处理,于是我便将类B的构造方法中加入参数,作为类B的内部变量,在类B中对这个传入的参数进行初始化,然后回到类A的执行中,去使用个这个容器类。以上逻辑一切都看起来很合理是吧? 类似的思路如题所示可以吧? 但是实际上说,a仍然是空的?
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章