成员函数中
QString str=QString(“aaaaa”);
str变量是在堆中创建的还是在栈中创建的?
QImage imageTmp = QImage(“/home/aaaa.jpg”,QImage::Format_RGB32);
imageTmp 变量是在堆中创建的还是在栈中创建的?
这个其实就是基本功了,这个和C++ std:string差不多类似的,我们在学习C++的过程中多数都会写个自己的string,不知道你自己有没有试过,大约的结构如下:
class MyString() { public: MyString(); MyString(const char *str); MyString(const MyString& another_str); ~MyString(); ... private: char *m_str; size_t m_len; }
m_str这个成员变量是用来存储实际数据的,而这个指针指向的空间是堆空间
当我们用MyString str = MyString("aaaa")这种方式的时候,其实在堆和栈都占用了内存,无疑的是str这个变量是在栈空间的,但是构造赋值等操作的是会在堆内存创建空间,而保存的“字符串”数据也是在堆里的
这个其实就是基本功了,这个和C++ std:string差不多类似的,我们在学习C++的过程中多数都会写个自己的string,不知道你自己有没有试过,大约的结构如下:
m_str这个成员变量是用来存储实际数据的,而这个指针指向的空间是堆空间
当我们用MyString str = MyString("aaaa")这种方式的时候,其实在堆和栈都占用了内存,无疑的是str这个变量是在栈空间的,但是构造赋值等操作的是会在堆内存创建空间,而保存的“字符串”数据也是在堆里的