问题:在qt中写一个方法,用指针做返回值,编译没有问题,但执行的时候程序会报错。
我的操作步骤:
1.新建一个Test的测试类,内容如下:
Test.h
Test.cpp
2.main方法去调用Test类中void fun(QString* pStr)方法,如下,程序编译执行一下,没有问题
3.接下来,打印一下main方法中参数pStr1的内容,理论下*pStr1的值会是”123456”,然后并非如此,如下图,编译时没有报错,而执行的时候程序报错了:
4.从步骤2到步骤3可以看出,代码是因为加了qDebug()<<*pStr1;后才报错的,那么问题就是在这里了,然后再看这个语句,心想,应该是*pStr1指向的内存被释放了,所以用*pStr1的时候就会导致程序崩溃,于是,做了如下验证(空间原因,下面直接写代码的形式呈现给大家):
Qt中如何用指针返回参数
最新推荐文章于 2024-09-17 11:29:48 发布
在Qt中,使用指针作为返回值时遇到程序运行时错误。问题出现在调用`qDebug()<<*pStr1;`后,因为指针`pStr1`指向的内存被释放。通过阅读文章了解到Qt有自己的内存管理机制。解决方法是修改fun函数的实现,确保指针内存管理正确。修改后的代码使得程序能够正确地使用指针传参。
摘要由CSDN通过智能技术生成