為什麼 C 中沒有放置刪除

發布 科技 2024-05-16
24個回答
  1. 匿名使用者2024-01-28

    最近剛接觸RobotFramework,發現這個工具可以滿足我的要求,可以和SeleniumLibrary結合起來做相當不錯的Web自動化測試。 我以前接觸過 Selenium,但我覺得這個工具對開發人員更友好,而有了 RobotFramework,我覺得這個工具非常強大,而且接近測試人員。 它之所以強大,主要是因為這些測試指令碼可以儲存為文字格式(例如.txt html等)。

    本文內容比較舊,請檢視更新文章獲取最新的安裝指南。

    首先,你需要有python,請選擇將python新增到路徑)。

    必需),然後安裝機械人框架)。

    IDE非常好)。

    安裝成功後。

    執行 [pythondir]。

    當您看到該介面時,安裝成功。

    入門 == 安裝完成,這個框架可以說是基於關鍵字的操作,按 F5 檢視所有載入的關鍵字。

    首先,新增乙個新專案

    然後新增乙個套件

    然後新增測試用例,然後在套件級別新增庫,新增 selenium 庫,按 F5 檢查新增是否成功,如圖所示。

    好了,繼續在套件的設定中設定套件的開始和結束的關鍵詞,即啟動 selenium server 和停止 selenium server,他會幫助我們在執行時自動啟動 selenium server。

    接下來,在測試用例中新增乙個步驟,開啟瀏覽器(一般使用Selenium開啟瀏覽器進行Web測試),新增關鍵字後變為藍色表示找到該關鍵字,否則可能是錯別字或對應的庫沒有載入。 紅色表示有乙個必需的引數需要被賦予乙個輸入值,具體引數可以在 F5 的關鍵字中描述。

    輸入引數,第二個引數預設是firefox,但是我沒有安裝,直接用IE就行了。

    以上只是乙個簡單的例子,沒有詳細介紹每個步驟的操作,只是乙個初步的介紹。 稍後會詳細介紹。

  2. 匿名使用者2024-01-27

    因為析構函式可以直接呼叫。

  3. 匿名使用者2024-01-26

    深入思考這個問題對你來說並不容易。 以下是我的理解:

    因為當它是內部資料時,編譯器可以識別它,即使它是乙個陣列,例如編譯器也可以識別它是乙個陣列,例如:char s;

    刪除 s; ,編譯器可以讀取 s 的位址來判斷它是乙個陣列型別---就像陣列名稱只需要傳入和傳出陣列引數一樣。 陣列的名稱表示陣列開頭的位址,即陣列的條目。

    陣列是記憶體表示之上的連續記憶體,因此可以連續刪除。

    當然,刪除 s; 更好的是,它表明它被宣告為乙個陣列。

    另乙個原因是對內建資料型別 delete 的操作已經定義,程式設計師無法再重新定義它。

    對於由程式設計師自己定義的類,程式設計師可以定義自己的行為。

    但是,如果是其他型別的,例如:A類;

    a s1;刪除 s1 時; ,因為 a 不是內建型別,而是程式設計師自己定義的類,所以允許程式設計師自己定義刪除操作。 程式設計師類的 delete 過載運算子是刪除部分或全部。

    因此,編譯器預設刪除乙個類物件,並且只解構第乙個類物件。 如果你想解構一切,你必須新增,即刪除

    建議:對於陣列,無論是內建的還是使用者定義的,使用 delete 來顯示可以增加程式的可讀性。

  4. 匿名使用者2024-01-25

    因為內建型別不需要呼叫析構函式,如果比較複雜,就需要呼叫析構函式型別,如果是 delete m 資料用法的陣列,則不會呼叫以下元素的析構函式。

    無論如何,刪除和刪除之間的區別應該明確,混淆這可能是乙個隱含的問題或沒有任何好處的誤解,所以寫這條評論的人是。

  5. 匿名使用者2024-01-24

    我的觀點是,無論是內建型別,還是 adt,只要是陣列,都同意使用 delete

  6. 匿名使用者2024-01-23

    您的刪除落後於 cout。 所以刪除還沒有執行,當然析構函式還沒有被呼叫。

    你可以把 delete 移到 cout 的前面,你會看到區別。

  7. 匿名使用者2024-01-22

    這是因為它是呼叫 delete ptr 之前的 point::number 輸出

  8. 匿名使用者2024-01-21

    讓我們看乙個例子。 void temp()

    int * a = new int;

    a=5;printf("%d",a);

    你讓系統分配一塊大小為 4 位元組的記憶體供你使用,指標 A 指向這個記憶體的起點,然後你可以用 A 來做一些事情,加、減、乘、除,或者什麼的,當你用完它的時候,你就不能再用了, 你必須刪除它,因為函式離開後,你找不到 A 指標,你永遠不能使用這個記憶體,這 4 個位元組的記憶體永遠被占用,系統總是認為你還需要使用這個記憶體,我們稱之為記憶體洩漏。

    如果有更多的洩漏,您的程式將占用越來越多的記憶體,最終它會填滿您計算機的記憶體,導致程式崩潰。

  9. 匿名使用者2024-01-20

    這是對記憶體的浪費。

  10. 匿名使用者2024-01-19

    string *strp;它只是指向定義的指標,因此只需刪除 strp。

    而字串 *strp[10]; 是的,定義了乙個包含 10 個指標的陣列,需要刪除 strp;

  11. 匿名使用者2024-01-18

    new,如果有 []。

    則 [] 僅在刪除時才需要

    刪除和新是一對,乙個分配空間,乙個釋放空間。 兩者應保持一致。

  12. 匿名使用者2024-01-17

    string *strp=new string("helllo.");strp 是指動態分配的記憶體。

    delete strp;如果刪除 strp,則釋放記憶體; 那麼應該為記憶體分配 string *strp=new string ; (分配多個記憶體塊)。

  13. 匿名使用者2024-01-16

    新的是刪除釋放的,新的是刪除釋放的。

    new 是建立乙個物件; new 是建立物件陣列;

  14. 匿名使用者2024-01-15

    編譯器自然可以通過單個int型別資料所占用的記憶體空間來計算8個int資料所需的空間,從而分配乙個連續的記憶體空間來使用,至於更詳細、更具體的內容,房東其實也不需要在意,如果想要學習很深入的話,可以看看編譯原理。

    至於後面的用法,int *p=a; 是的,可以定義指向陣列的指標,陣列和指標之間的關係等效於為陣列 A 提供名稱為 p 的別名。

    但刪除 p; 有乙個問題,刪除函式是為了釋放記憶體空間,而指標本身並沒有開啟記憶體空間,所以是不合法的,編譯器在編譯時不會檢查,只會在執行時報錯。

    刪除 p 也有同樣的問題,你不能使用別名來釋放記憶體,因為編譯器不知道名稱的記憶體是否還在使用。

    但房東一開始:

    int a=new int [8];

    delete a;

    刪除這些定義沒有問題,也沒有別名問題,即釋放陣列 a 占用的記憶體空間。

  15. 匿名使用者2024-01-14

    在 C++ 中,刪除使用 new 分配的陣列,並使用以下框來反映陣列元素何時是物件。

  16. 匿名使用者2024-01-13

    刪除 P 釋放 P 引用的記憶體,如果 P 是類物件,它還呼叫 P 的析構函式;

    delete p 釋放 p 的指數群的記憶體,如果 p 是類物件,則分別呼叫每個陣列元素 p[i] 的析構函式; 編譯器通過“遍歷”陣列來刪除每個元素,事先不知道大小,而是遍歷搜尋。

  17. 匿名使用者2024-01-12

    int a[8];

    int *p=a;這是可能的。 將 A 的第乙個位址分配給指標 P;

    刪除 p 編號。 常規刪除和新包。 p=a 只是使 p 的第乙個位址指向 a,並且不會開啟空間,因此無法刪除。

    至於編譯器如何知道資料的大小,你可以看看有效的C++。

  18. 匿名使用者2024-01-11

    對於房東定義的整數,delete 和 delete 具有完全相同的效果。

    就釋放記憶體而言,編譯器會根據指標的位址知道記憶體的大小,因為當您應用時,記憶體管理器會從此位址開始記錄您申請的記憶體的大小。

    當陣列元素是物件時,可以看到 delete 和 delete 之間的區別。

    通常,delete 只會永遠啟動該物件的析構函式,而 delete 可以呼叫陣列中所有物件的析構函式。

    對於簡單的資料型別,刪除和刪除都只是釋放記憶體,沒有區別。

  19. 匿名使用者2024-01-10

    其實你的測試也顯示了問題,不是嗎,刪除乙個指標,指標變數本身不會改變,但是它指向的內容會被清除,指標指向乙個無意義的區域,直到再次被分配,所以刪除只是乙個堆空間可用。

  20. 匿名使用者2024-01-09

    指標刪除是刪除要指向的指標。

    但是,對於指標的使用,刪除後必須賦值 null,否則會形成字段指標,程式會崩潰。

    記得!!

  21. 匿名使用者2024-01-08

    delete p;

    cout <<"發布後"刪除 p 後,p 的值不會改變,它仍然是原來的值,但是你不能再使用 p 指向的記憶體了,你的程式只是在這裡沒有犯錯,但是這個時候,p 指向的記憶體不再屬於你的程式的記憶體, 如果其他程式在申請記憶體時也申請了這個記憶體,那麼對P的記憶體進行操作是很危險的,因為你正在改變其他程式的記憶體值。

  22. 匿名使用者2024-01-07

    首先,new 在堆上是 new,刪除後會釋放,但是編譯器在刪除後不一定會清空 p,所以你這裡還是指向原來的位置,但是一旦這個位置對其他變數有了 new,那麼它就不可控了。

    刪除 Standard 2003 定義。

    the delete-expression operator destroys a most derived object or array created by a new-expression.

    也就是說,它的定義只是破壞 p 指向的空間,使其可用並可以再次成為新的,並且不會對 p 進行指定的操作。

    請嘗試以下操作**。

    #include

    int main()

  23. 匿名使用者2024-01-06

    Delete 只是刪除 p 開頭的新記憶體區域。 它不會刪除指標 p,也不會刪除指標 p 指向的位址,刪除後需要放 p=null,否則可能會指向一段記憶體是 **,下次再使用 p 會導致崩潰。

    #include

    void main()

  24. 匿名使用者2024-01-05

    變數實際占用的記憶體分配有兩種型別:

    一種是 allocation on the stack,它直接宣告變數在堆疊上分配,不能通過 new 在堆疊上分配,不刪除

    一種是在堆上分配,堆是通過新方式和其他方式分配的,需要刪除

    1)如果類中有乙個指標資料成員,而我沒有使用new,析構函式應該刪除嗎?

    不,你沒有。 2)為什麼不使用刪除類中的整數,字元等,C++自動釋放它們占用的記憶體?

    分配類物件時,記憶體與內部 int 和 char 變數一起分配,當類物件被釋放時,這些變數也將被釋放。

    在堆疊上分配類物件時,無需處理任何內容。

    當乙個類物件被分配到乙個堆上時,只要刪除刪除了這個類物件,這些 int 和 char 變數就會隨之釋放。

相關回答
4個回答2024-05-16

當然也不等於0,landlord字元0的ascii值是48,可以去ascii表,可以看到結果! >>>More

5個回答2024-05-16

MIUI系統適配市面上主流的旗艦機型,MIUI官方也在不斷組織各種活動,與私人開發團隊一起將MIUI擴充套件到更多手機機型,請走吧。 >>>More

7個回答2024-05-16

手機加速可以安裝騰訊手機管家,它的加速功能非常強大,衝彎它有專門的一鍵優化功能,按下它可以加快你的手機清理速度。 但是,您可以放心,它只會清理系統中不必要的資料並釋放空間,而不會刪除您的重要資訊。 我還記得,我平時用手機關閉騰訊手機局的後台程式,這樣也可以非常有效的加速你的手機。

26個回答2024-05-16

在 C++ 中,指標是變數的位址。

由於在函式傳遞引數C++---實際上只有一種形式,因此將變數的位址傳遞給函式將使函式易於修改引數的值。 >>>More

25個回答2024-05-16

使用轉義字元。

n 換行符 (lf)。 >>>More