1. 程式人生 > >qt中new與delete的使用

qt中new與delete的使用

#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    QLabel *label =new QLabel("hello",&w);
    //這裡使用new之後不需要執行delete,因為label的父類是w,而w是在棧中建立,在程式關閉的時候會自動釋放,所以作為w的子類記憶體也被釋放。

    QLabel *label1 =new QLabel("world");
    //這個是需要執行delete label1,否則會造成記憶體洩漏,因為label沒有父類,所以不會為label釋放記憶體
    w.show();
    a.exec();
    delete label1;
    label1=NULL;
    return 0;
}

相關推薦

qtnewdelete的使用

#include "mainwindow.h" #include <QApplication> #include <QTextCodec> #include <QLabel> int main(int argc, char *argv[]) {     QApplicati

C++newdelete之後發生了什麼

眾所周知,如果我們使用new向系統申請了記憶體,我們應該使用指標指向這一塊記憶體,俾能我們使用結束後,通過delete該指標釋放此記憶體資源。 如果理解只達到這種程度,在記憶體管理稍微複雜一點時便一定會束手無策。總有一些事情比其他事情更基本一點,現在我來談談當我們new和delete之後

C++newdelete的用法

new和delete運算子用於動態分配和撤銷記憶體的運算子 new用法:           1.     開闢單變數地址空間  

函式newdelete的注意點

來看一個典型的例子 關於指標的一些段錯誤,是因為記憶體釋放的不對,這條例子是符合要求的,因為指標 已經new出,完全可以使用delete將其釋放,在函式中傳入指標的時候,是可以進行記憶體 釋放的。 下一個例子 這個例子就有記憶體洩露的問題了。因為在函式中傳入的時

Oracle truncatedelete的區別

                truncate是oracle中獨有的關鍵字吧!它的作用是清空一個表格,在刪除資料方面,其與delete有一些區別,以便自己記住:1、在功能上,truncate是清空一個表的內容,它相當於delete from table_name。2、delete是dml操作,truncat

C++newdelete的背後

NewTest!wmain: 00aa1020 56              push    esi 00aa1021 6a04            push    4  00aa1023 e8b4030000      call    NewTest!operator new (00aa13d

Javanewnull的不同

今天在寫一個android的程式時,本來想初始化一個list的集合,以避免第二次的資料新增在第一次的後面,就直接使用了物件=null,發現在給list集合新增資料後執行出現了這樣的錯誤。 翻譯下來的意思是  試圖在空物件引用上呼叫介面方法的布林java. U.List.Advic

QtQString基本型別的轉換問題

之前寫過幾篇文章,後來由於部分原因刪除掉了,最近剛好希望在Qt方面寫一點東西,方便大家查詢,也希望大家可以相互關注,多做交流,我會堅持在今後的Qt的工作學習中,不斷地更新遇到的技術問題與Qt的一些基礎

如何newdelete各種二維陣列

#include<iostream> using namespace std; const int M = 10; //行數 const int N = 20; //列數 int main() { //第一種,可以直接[][]訪問。但是記憶

C++關於char*型陣列的newdelete

1.有一個new操作,就需要一個delete操作; 2.有一個new []操作,就需要一個delete[]操作,否則記憶體洩漏 所以應該是{char* s = new char[100];delete[] s;} s本身存在於棧,指向的空間位於堆; 3.

資料庫truncatedelete的差別和聯絡?

聯絡:兩者都可以刪除一個表中的資料 區別: 是一個數據定義語言,會被隱式地提交,一旦執行不能夠回滾。delete是每一次刪除一行資料,同時將刪除的操作以日誌的形式進行儲存,從而可以進行回滾操作。 de

iOS開發 newalloc/init的區別 及 [NSArray array] 和 [[NSArray alloc]init] 及 self. 和 _ 的區別

專案過程中,想到這幾個概念的區別有些模糊,於是縱觀各種資料,來篇博文為自己記錄下,也為小夥伴們說說我的理解。 [className new] 和 [[className alloc] init] 的區別 1.在實際開發中很少會用到new,一般建立物件咱們看到的全

c++newdelete的區別

new 和delete 是運算子,而不是函式。 new new 運算子的格式: new 型別[初值]; new int; ///開闢一個存放整數的儲存空間,返回一個指向該儲存空間的地址

QtSignalSlot引數問題

Referenced by: 應注意的問題 訊號與槽機制是比較靈活的,但有些侷限性我們必須瞭解,這樣在實際的使用過程中做到有的放矢,避免產生一些錯誤。下面就介紹一下這方面的情況。 1 .訊號與槽的效率是非常高的,但是同真正的回撥函式比較起來,由於增加了靈活性,

qtQStringStringint,double,char*之間的轉換

本文介紹的是Qt 各種資料型別轉換,病沒有多少內容,只是例項操作了一下,多多參考!如果你是初學者的話。在程式設計的過程中,總是不斷的去轉換資料型別。先來看看內容。 1、QString --> string QString.toStdString(); 2、string --> QString

C++newdelete

New運算子 1、new表示式: 當我們使用一條new表示式時: string *sp=newstring(“a value”); string *arr=newstring[10]; 實際上執行了三步操作。第一步,new表示式呼叫一個名為operatornew(或者ope

newdelete

c++中的new()與delete()和C語言中molloc()與free()相對應。 1、new (1)用法 法1: int *p; p=new type;//其中type

用C++模板來展示newdelete操作符原理

C++中的new與delete可以認為是C中的malloc與free的升級版本。 new包含兩部分,一部分是與malloc功能相同,是從堆上面申請記憶體塊,第二部是呼叫類的構造方法來初始化剛申請的記憶體。 delete是new的逆過程,先呼叫類的析構方法來反初始化,再

C++懸掛指標: newdelete的一些理解

這是我的第一篇技術部落格,淺顯簡短。 不多說,直接上程式碼: #include <iostream> using namespace std; class test{ private: int myprivateNum; public: test():m

Oracletruncatedelete的區別

truncate 是Oracle的關鍵字,在SQLServer資料庫中也是存在的,功能一樣。它的作用是清空一個表格,在刪除資料方面,其與delete的一些區別如下: 1、在功能上,truncate是清空一個表的內容,它相當於delete from table_name。2、d