社区
C++ 语言
帖子详情
请将一个困惑很多的问题(在自定义函数中进行New),多谢
jjajun
2011-08-22 07:08:41
现在有段代码很困惑,也查了很多资料,始终没有能理解其中根本的原理,谁能清楚地解释一下,再次谢过了。
1void MyNew(int *p)
2{
3 p = new int;
4}
5
6int main()
7{
8 int *p = NULL;
9 MyNew(p);
10}
在main函数中*p无法通过MyNew()获得相应的内存,为什么?
...全文
127
7
打赏
收藏
请将一个困惑很多的问题(在自定义函数中进行New),多谢
现在有段代码很困惑,也查了很多资料,始终没有能理解其中根本的原理,谁能清楚地解释一下,再次谢过了。 1void MyNew(int *p) 2{ 3 p = new int; 4} 5 6int main() 7{ 8 int *p = NULL; 9 MyNew(p); 10} 在main函数中*p无法通过MyNew()获得相应的内存,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
对象
2011-08-22
打赏
举报
回复
这是value operation了,lz如果把传递的参数改成&p应该就可以了。
就跟三楼说的似的,你的目标是操作指针,不是操作变量,因此你得传指针的指针。
yby4769250
2011-08-22
打赏
举报
回复
[Quote=引用 4 楼 babilife 的回复:]
引用 3 楼 zmlovelx 的回复:
理解传值,传指针,传引用的区别.
MyNew(int *p) 要修改变量,就得传变量的指针, 要修改指针(看成变量),就得传指针的指针.
当然直接传引用也是可以的.
++1,通俗易懂
[/Quote]
按值传递和按引用传递的区别,你区分实参p和myNew的形参p的关系就好了,他们仅仅是简单的值拷贝关系,除此之外,没有联系
恨天低
2011-08-22
打赏
举报
回复
1void MyNew(int *p)
2{
3 p = new int;
4}
5
6int main()
7{
8 int *p = NULL;
9 MyNew(p);
10}
这样属于值传递。执行MyNew时候,栈上开辟P内存,MyNew执行结束,p栈内存回收。
顺便说下,在哪里new就在哪里delete!否则有内存泄露
至善者善之敌
2011-08-22
打赏
举报
回复
[Quote=引用 3 楼 zmlovelx 的回复:]
理解传值,传指针,传引用的区别.
MyNew(int *p) 要修改变量,就得传变量的指针, 要修改指针(看成变量),就得传指针的指针.
当然直接传引用也是可以的.
[/Quote]
++1,通俗易懂
帅得不敢出门
2011-08-22
打赏
举报
回复
理解传值,传指针,传引用的区别.
MyNew(int *p) 要修改变量,就得传变量的指针, 要修改指针(看成变量),就得传指针的指针.
当然直接传引用也是可以的.
jjajun
2011-08-22
打赏
举报
回复
ls说的,我也知道,我只是不明白,为什么不能直接传P,取得内存,按理说p也是个指针,为什么就不能取得内存??
xiaoguangzaia
2011-08-22
打赏
举报
回复
MyNew(int **p)
然后MyNew(&p)
或者是引用,或者返回指针都可以
使用
new
操作符来调用
一个
构造函数的时候发生了什么
本文详细解析了使用
new
操作符调用构造函数时的四个步骤:创建空对象、设置原型、执行构造函数并绑定this、返回新对象。通过示例和代码解释了构造函数
中
的this变化以及__proto__指向。同时探讨了浏览器在描述执行过程
中
的表现,帮助理解
new
操作符的工作原理。
深入理解Golang
中
的
new
和make函数
本文深入探讨Golang
中
new
和make函数的差异。
new
是通用内存分配器,适用于所有类型,返回指针并初始化为零值;make是针对slice、map和channel的构造器,返回已初始化实例。还分析了二者在内存模型、编译器优化等方面的不同,并给出实践建议和性能优化启示。
关于malloc和
new
动态分配内存的
困惑
本文探讨了在使用C语言
进行
程序开发时遇到的
一个
问题
:为何在重复调用函数时,malloc无法成功分配内存,而使用C++的
new
操作符则能成功。通过对比malloc与
new
的工作机制,分析了可能的原因。
c++
中
new
在子函数
中
的使用
本文通过
一个
简单的C++程序示例探讨了
new
操作符的作用及其可能导致的内存泄漏
问题
。作者对比了使用
new
分配内存与直接定义变量的区别,并解释了为何
new
分配的内存需要显式释放以避免内存泄漏。
C++
new
delete执行时机和重载说明
C++的
new
关键字不可重载,但可以重载operator
new
以自定义内存分配。
new
创建对象时,先调用operator
new
分配内存,再由编译器调用构造函数。delete对象时,先执行析构函数,再调用operator delete释放内存。此过程不涉及构造函数和析构函数的重载。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章