JNIEnv的使用在C和C 中的區別

2021-05-21 13:48:27 字數 2813 閱讀 1383

1樓:千鋒教育

c++中delete和delete的區別如下:

在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。

程式舉例說明:

#include ;

using namespace std;

class t

~t()

};int main()

基本型別的物件沒有解構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以一個簡單的使用原則就是:new 和 delete、new 和 delete 對應使用。

c++中delete和delete的區別

2樓:du知道君

你是不是問 delete 和 delete 的區別? 一個是釋放單個物體 比如 : class a;...

a *p=new a(); 一個是釋放物體陣列 a *p=new a[50]; delete a;

c++中delete和delete的區別

3樓:千鋒教育

c++中delete和delete的區別從例項中比較如下:

#include ;

using namespace std;

class t

~t()

};int main()

delete p1 在**空間的過程中,只有 p1[0] 這個物件呼叫了解構函式,其它物件如 p1[1]、p1[2] 等都沒有呼叫自身的解構函式,這就是問題的癥結所在。如果用 delete,則在**空間之前所有物件都會首先呼叫自己的解構函式。

基本型別的物件沒有解構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以一個簡單的使用原則就是:new 和 delete、new 和 delete 對應使用。

4樓:福喜

c++告訴我們在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。

很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。

關於 new 和 delete,其中又分為兩種情況:(1) 為基本資料型別分配和**空間;(2) 為自定義型別分配和**空間。

對於 (1),毫無疑問 delete 和 delete 是等同的。但是對於 (2),情況就發生了變化。

delete p1 在**空間的過程中,只有 p1[0] 這個物件呼叫了解構函式,其它物件如 p1[1]、p1 [2] 等都沒有呼叫自身的解構函式,這就是問題的癥結所在。如果用 delete,則在**空間之前所有物件都會首先呼叫自己的解構函式。

基本型別的物件沒有解構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以一個簡單的使用就是:new 和 delete、new 和 delete 對應使用。

c++中delete和delete的區別

5樓:千鋒教育

delete 是刪除一個變數並且釋放其分配的記憶體.一般用在非內部資料型別的物件上.

delete 刪除一個陣列,釋放分配的記憶體.

上面是運算子.

free() 是c++/c語言的標準庫函式,不能用在非內部資料型別的物件上,滿足不了動態物件的要求.

6樓:匿名使用者

一直對c++中的delete和delete的區別不甚瞭解,今天遇到了,上網查了一下,得出了結論。做個備份,以免丟失。

c++告訴我們在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。

關於 new 和 delete,其中又分為兩種情況:(1) 為基本資料型別分配和**空間;(2) 為自定義型別分配和**空間。

請看下面的程式。

#include ;

using namespace std;

class t

~t()

};int main()

大家可以自己執行這個程式,看一看 delete p1 和 delete p1 的不同結果,我就不在這裡貼執行結果了。

從執行結果中我們可以看出,delete p1 在**空間的過程中,只有 p1[0] 這個物件呼叫了解構函式,其它物件如 p1[1]、p1[2] 等都沒有呼叫自身的解構函式,這就是問題的癥結所在。如果用 delete,則在**空間之前所有物件都會首先呼叫自己的解構函式。

基本型別的物件沒有解構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以一個簡單的使用原則就是:new 和 delete、new 和 delete 對應使用。

7樓:匿名使用者

是說delete和delete的區別麼?

前者銷燬的只是指標指向的一個物件,後者是刪除一組(一個陣列)

c++中struct和class的區別

解構函式怎麼用,在c 中的,C 中的解構函式是怎麼呼叫的?

解構函式是一個類的例項銷燬的時候,被自動呼叫的函式,一般用來做一些清理性的工作。就是呼叫完類的實體物件後,需要呼叫解構函式 解構函式,就是善後處理,該物件的生命週期結束了,它負責善後的一些工作,如釋放已分配的記憶體等。你將該物件delete掉時,解構函式就自動執行了,不用你去呼叫它的。簡單的舉個例子...

C 中指標裡面的怎麼用,在C 中,指標中, 符號有什麼用?應該怎麼用,謝謝了,我是初學者。

在宣告語句中的 是與前面的型別符號配合的,而不是與後面的變數名配合的,如int p 是宣告瞭一個int 型指標變數p,而不是一個int型變數 p 指標變數是p,所以後面賦值時不得再加 指標p並沒有賦值,是野指標,不能作右值。運算表示式中單獨的 基本就兩種情況 一是在指標前,它是取指標所指物件的值 二...

c結構體陣列的定義賦值與使用,C中如何定義一個結構體陣列,怎麼賦值使用

你應該是少傳了一個頁數的引數,比如頁數為1時查詢資料庫1 10條資料,為2時查詢11 20條資料 定義 一個類,比較好 c 中如何定義一個結構體陣列,怎麼賦值使用 public struct gnss gnss gnss new gnss 24 gnss 0 lon sss 在你原有的結構體裡面加上...