1樓:匿名使用者
字串尾部應該有個'\0'作為字串結尾標誌,所以申請空間應該多申請一個:
char*temp_name=new char[y+1];
在for(){}迴圈後面,加上temp_name[i]='\0';就行了.
c++使用char* a=new char[]的問題。。急
2樓:
字串尾部應該有個'\0'作為字串結尾標誌,所以申請空間應該多申請一個:
char*temp_name=new char[y+1];
在for(){}迴圈後面,加上temp_name[i]='\0';就行了.
c++ char*型別new的記憶體釋放出問題了
3樓:
point = new char[5];時 point指向bai了du一新分配的記憶體
point = "fda";時,zhipoint拋棄了dao剛new的記憶體,指向了"fda"所在地址。fda"本身已經被分
回配好答記憶體。所以剛才的new記憶體已經失去意義,因為point已經不再指向它了。這也是造成記憶體洩露的一個原因,因為剛動態分配的那塊記憶體已經沒辦法釋放了(被point指標拋棄了,沒辦法再找到這塊記憶體地址,也就沒法delete)。
"fda"的記憶體不是動態分配的,所以delete時出錯。
這要一個一個字元來操作:point[0] = 'f'; point[1] = 'd'; point[2] = 'a'; 或者參考 jxq61 兄的回答。(注意,這裡才是真正的把字元存到新分配的記憶體裡)
4樓:匿名使用者
point 是指標。指向了bai一du
個字串。這個字串是zhi佔六個位元組的。daopoint = new int[10]; 這個是申請了版
一個動態記憶體,int型的權佔4個位元組。 int[10].只是一個整形變數,並不是申請了10個int型的記憶體。而是,只申請了一個。六個位元組的東西往四個位元組裡存,能不出錯嗎?
我是學c語言的,c++只是看了看。我按照c語言的東西來解釋的。希望對你有用。
5樓:匿名使用者
point = new int[10] 表示你分配了 10個int型的空間,你給它賦字串肯定錯了。
就如 int s[5] = "hello"
6樓:萬哩挑壹
delete q;//釋放
原來來的
delete p;//釋放現在的源 '
記住:記憶體釋放了之後不能再使用bai該塊記憶體,最好在釋du放之後將指標zhi變數賦dao值為空 。
delete q;
q= null;
c++是在c語言的基礎上開發的一種物件導向程式語言,應用廣泛。c++支援多種程式設計正規化 --物件導向程式設計、泛型程式設計和過程化程式設計。最新正式標準c++14於2023年8月18日公佈。
其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:類、封裝、過載等特性!
7樓:匿名使用者
point = new char[5];
point = "fda";//這句來話登出了就源對了 不知道為什麼
point = "fda"
應改為:
memmove( point, "fda", 3);
或:strcpy( point, "fda");
在最前面加上:
#include "string.h"
8樓:匿名使用者
程式在解構函式中釋放字元陣列的時候失敗了,程式試圖去釋放尚未分配的記憶體空間
關於c++動態記憶體分配 這樣寫會不會出什麼問題? char *a = new char []; a
9樓:匿名使用者
請在new char的時候就寫好申請內
存的大小new char[size], 編譯器並不會從後文或者執行時推斷需要多少記憶體
我沒查到不在裡寫上申請記憶體大小時編譯器會怎麼處理, 看上去應該會報錯才對, 能通過編譯的話我猜可能是當作0或者1或者某個預設值, 總之申請到的記憶體不一定能存得下從cin接收的字串
即使不填上要申請的記憶體大小也能正常執行可能只是char *a指向的那一塊記憶體剛好沒有被用到而已, 從cin輸入的字串足夠長的話多半就會報錯了
請問在c++裡,為什麼char *p=new char[n]需要delete而char *p="a
10樓:匿名使用者
你需要關注一些記憶體分配,第一種在堆裡分配了空間所以只能由程式設計師手動**,第二種不是在堆記憶體分配空間,具體在**分配的不記得了,是不需要**的
11樓:殘留的信仰
是的,new出來的空間是建立在堆上,是需要操作者本人進行清除的
而char *p="abcde"建立的空間是在棧上,是由系統自動清理
12樓:_玄武酷酷熊
第一個是分配在堆上,需要人工釋放,第二個一般是分配在棧上,由os釋放
c++問題在類的建構函式裡char*要不要new一下在賦值?詳細**如下:
13樓:匿名使用者
這個是要看傳進來char*指標的生存期了,如果比這個class要長是不用new的,如果傳進來指標很快就銷燬了,那就要new一個新的出來,你的例子是不需要的,const的指標生存期是全域性的
14樓:笑年
不必要。
因為ch是指標。而s也是指標
只是把ch的指標指向s的指標所指的值
也就是說只是移動ch的指標,並未分配記憶體
c++ 語言中char a="a"; 和char a='a' 有什麼區別
15樓:匿名使用者
char a='a' 是合法的
char a="a' 是不合法的
char型不能為字串,只能為字元
16樓:匿名使用者
「a」表示字串,字串長度等於內容加『\0』的長度,所以是佔用兩個位元組記憶體。『a』表示字元,佔用一個位元組記憶體。而一個字元變數長度永遠為1位元組,所以前者寫法錯誤,應該寫成 char *a = "a"。
17樓:匿名使用者
前面是錯的。「a」為const char *, 「a」= 『a'+ '\0'。
(char*)問題
18樓:匿名使用者
unsigned int ab;
這樣得到的ab是一bai個du無符號整型zhi的變數,&ab是ab這個變數的dao地址,也就是一個「unsigned int *」型別的指標回。「(unsigned char*)」的意答思是強制轉換,在這裡將「unsigned int *」型別轉為「unsigned char *」型別。
可參考下面**:
unsigned int ab;
unsigned int *pui = &ab;
unsigned char *puc = (unsigned char *)pui;
19樓:匿名使用者
(unsigned char*)是為了指標強轉型別,也就是把一個其他型別的指
針轉換為一個unsigned char*。另外,&ab是取內ab變數地址的容意思。指標跟地址你基本可以認為是一個東西。
所以這句話的意思就是把變數ab的地址轉成一個unsigned char*。
不過我覺得這樣做實在不好~~
20樓:匿名使用者
指標變數的大小是不是就是unsigned char.
通用用sizeof(unsigned char*)=4個位元組來儲存一個指標變數?
把一個整型變數通過這種方式來變成一個指標變數
c++char型陣列問題
21樓:天一弦劍
糾正你bai的**
du:int n;
cin >> n;
char *string=new char[n + 1];
for(int i=0;i試吧,zhi 記住:字元dao串是版以'\0'結束權的。
22樓:匿名使用者
我倒是奇bai怪了,你這程式能編譯?du首先cin<< 輸入應zhi該是cin>>吧,然後你的
daoc從哪蹦內出來的?
容宣告在哪? 可能是你的程式不給完整吧,在別的地方宣告瞭?那得標示出來,要不怎麼看你程式的問題在哪咯?
最後,你用了自由儲存空間,卻沒有用delet釋放記憶體歸還給計算機。。。
23樓:匿名使用者
你的c是什麼啊
而且cin的格式應該是cin>>n;
24樓:谷岑僪昭昭
糾正你的**:
intn;
cin>>
n;char
*string=new
char[n
+1];
for(int
i=0;i,
記住:字串是以
回'\0'結束答的。
如何使用c語言做簡單的計算器,如何使用C語言做一個簡單的計算器
我試一下了 include include int main void return 0 該例中乘法用的是x,因為 有特別的含義 include using namespace std int main system pause return 0 編這個肯定不是一會兒的事,不過我建議你去csdn下一...
JNIEnv的使用在C和C 中的區別
c 中delete和delete的區別如下 在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。程式舉例說明 include using namespace std class t t int main 基本型別的物件沒有解...
怎樣使用C的RichTextBox控制元件
這是高階文 本顯copy示控制元件。它比textbox來的更高階,支援段落和格式。text屬性 string 控制元件正文 readonly屬性 bool 控制能否讀寫clear 方法 清除所有文字 backcolor屬性 color 背景顏色forecolor屬性 color 文字顏色,前景色其它...