qt堆栈的理解

xxdd 发布于 01/15 21:36
阅读 212
收藏 0
Qt

成员函数中

QString str=QString(“aaaaa”);

str变量是在堆中创建的还是在栈中创建的?

QImage imageTmp = QImage(“/home/aaaa.jpg”,QImage::Format_RGB32);

imageTmp 变量是在堆中创建的还是在栈中创建的?

加载中
0
快乐的一只小青蛙
快乐的一只小青蛙

这个其实就是基本功了,这个和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这个变量是在栈空间的,但是构造赋值等操作的是会在堆内存创建空间,而保存的“字符串”数据也是在堆里的

返回顶部
顶部