如其一个指针函数没有定义返回值,那么在调用完毕后会返回什么
如果一个指针函数没有定义返回值,那么在调用完毕后会返回什么?
如题,今天看到一个视频这样做过,很好奇..
------解决方案--------------------
返回值一般保存在eax寄存器中,所以如果没赋值返回值,也就是没对eax赋值,那么你读取eax即返回的值是不确定的。
------解决方案--------------------
显然程序错了啊!create函数接口没有返回,也就是malloc的地址没有返回!
在接口里堆内存不返回如何使用如何调用释放?
代码有问题!在哪里复制过来的啊?
------解决方案--------------------
程序肯定错误了,用VC编译的话会认为没有返回值,错误。使用gcc编译倒是没有问题,
程序可能运行还是能显示值啥的,因为,虽然没有返回值,实际在createnode(v)后,还是有一个值赋给root,但这个值完全是不可知的,可能正确,可能不正确。而视频中的root值可能指向一个可以读写的内存,所以运行看上去似乎是正确的。
------解决方案--------------------
恩,程序有错:
函数体少了个return语句。
返回值一般都是通过通用寄存器eax返回,也就是在退出函数时候,要返回的值会存储到eax中去,然后再赋值给主调函数中的变量。如果不使用,就简单的抛弃。
注意:最多只能返回一个值,因此一个寄存器就够了!如果想多个返回,可以使用传参数引用或者指针方式,或者返回多个值合成的结构体
如题,今天看到一个视频这样做过,很好奇..
------解决方案--------------------
返回值一般保存在eax寄存器中,所以如果没赋值返回值,也就是没对eax赋值,那么你读取eax即返回的值是不确定的。
------解决方案--------------------
显然程序错了啊!create函数接口没有返回,也就是malloc的地址没有返回!
在接口里堆内存不返回如何使用如何调用释放?
代码有问题!在哪里复制过来的啊?
------解决方案--------------------
程序肯定错误了,用VC编译的话会认为没有返回值,错误。使用gcc编译倒是没有问题,
程序可能运行还是能显示值啥的,因为,虽然没有返回值,实际在createnode(v)后,还是有一个值赋给root,但这个值完全是不可知的,可能正确,可能不正确。而视频中的root值可能指向一个可以读写的内存,所以运行看上去似乎是正确的。
------解决方案--------------------
恩,程序有错:
CreateNode(v);
函数体少了个return语句。
返回值一般都是通过通用寄存器eax返回,也就是在退出函数时候,要返回的值会存储到eax中去,然后再赋值给主调函数中的变量。如果不使用,就简单的抛弃。
注意:最多只能返回一个值,因此一个寄存器就够了!如果想多个返回,可以使用传参数引用或者指针方式,或者返回多个值合成的结构体