我的編程樂(lè)園
積累,堅(jiān)持!
---------我是一只IT小小鳥(niǎo)
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆-145 評(píng)論-173 文章-70 trackbacks-0
【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)【新的問(wèn)題!】【各位繼續(xù)關(guān)注討論啊!】
最近突然發(fā)現(xiàn)自己曾經(jīng)建立的C++體系出現(xiàn)了很多漏洞,對(duì)很多問(wèn)題都產(chǎn)生了疑問(wèn),不知道自己是鉆了牛角尖還是探究C++的底層或者細(xì)節(jié),不過(guò)既然碰到了,就解決之吧,或許在某一天之后,會(huì)驚奇的發(fā)現(xiàn),原來(lái)自己的這些問(wèn)題會(huì)出現(xiàn)某天的筆試或者工作中呢。
言歸正傳,這個(gè)問(wèn)題是關(guān)于new操作符的。今天在完成C++作業(yè)的時(shí)候,需要自己實(shí)現(xiàn)一個(gè)strlen來(lái),其實(shí)就是調(diào)用C語(yǔ)言函數(shù)就可以,不過(guò)我突發(fā)奇想,寫(xiě)下了下面的這個(gè)代碼:
code 1:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str
=
new
char
[
4
];
7
strcpy(str,
"
fjifejfief
"
);
8
cout
<<
str
<<
endl;
9
}
code 2:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str
=
new
char
[
5
];
7
strcpy(str,
"
Good
"
);
8
strcat(str,
"
I Love C++
"
);
9
cout
<<
str
<<
endl;
10
}
上面的兩個(gè)代碼都是用到了new操作符,動(dòng)態(tài)分配了一個(gè)固定的存儲(chǔ)空間,OK。
然后通過(guò)strcpy來(lái)實(shí)現(xiàn)賦值,從而將原來(lái)的那個(gè)分配的區(qū)域填充。可是在1和2中都有一個(gè)問(wèn)題,那就是,填充的字符串超過(guò)了動(dòng)態(tài)分配的大小,在code1中,實(shí)際分配的只有4個(gè)字節(jié),而自己拷貝過(guò)去的確有10個(gè)字節(jié)(不含null),而code2中,首先初始化的時(shí)候沒(méi)有問(wèn)題,后面的連接函數(shù)也是。為何我會(huì)產(chǎn)生這個(gè)問(wèn)題呢?
因?yàn)樵?jīng)在《C++ Primer》一書(shū)中講到,當(dāng)進(jìn)行字符串操作的時(shí)候,需要特別注意到那個(gè)null要占用一個(gè)空間,而對(duì)于strcat和其他函數(shù),特別要注意是否超過(guò)表示的范圍,而我自己曾經(jīng)碰到過(guò)這個(gè)問(wèn)題,所以比較疑惑,上面的那個(gè)沒(méi)有溢出嗎?為何可以輸出正確的結(jié)果呢?
下面,列出個(gè)錯(cuò)誤的例子來(lái)看看:
code3
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
str[
4
]
=
"
goo
"
;
7
cout
<<
str
<<
endl;
8
strcat(str,
"
sfsfefe
"
);
9
cout
<<
str
<<
endl;
10
return
0
;
11
}
明顯code3會(huì)出錯(cuò)(剛開(kāi)始的時(shí)候居然沒(méi)有出錯(cuò),后來(lái)程序才崩潰的,以為靈異事件呢。),固定分配的數(shù)組的話,需要特別注意像strcat函數(shù),因?yàn)檫@種連接函數(shù)就可能超過(guò)范圍,發(fā)生錯(cuò)誤。
ok:
匯總?cè)缦拢汗潭ǚ峙涞臅r(shí)候,不能夠超過(guò)數(shù)組的范圍,而且字符串的話需要注意總是有一個(gè)null在其中的,所以大小要自己把握好。
但是,對(duì)于new動(dòng)態(tài)分配的話,可以超過(guò)范圍,不管是strcat還是直接在分配的時(shí)候超過(guò)范圍都可以,Why?
============================================================================================================
經(jīng)過(guò)網(wǎng)友留言匯總,同時(shí)自己測(cè)試,發(fā)現(xiàn)了一些新的問(wèn)題,也有了新的體會(huì)! Version 1
============================================================================================================
留言匯總(解答):
經(jīng)過(guò)和網(wǎng)友的討論,我初步了解了錯(cuò)誤可能的原因,現(xiàn)羅列如下,如有遺漏和錯(cuò)誤,還望各位指教。
1.兩者的分配方式不同。使用關(guān)鍵字new操作符分配的話,分配的空間是在堆當(dāng)中(heap),而直接使用數(shù)組的話,分配的空間在堆棧中(stack)。
2.操作。對(duì)于堆棧的溢出,由于變量的填充時(shí)按照從高地址到低地址的方式,所以,溢出的話會(huì)修改函數(shù)的返回值,造成運(yùn)行的錯(cuò)誤。而對(duì)于堆分配的話,這里即使溢出了,由于沒(méi)有對(duì)它進(jìn)行進(jìn)一步操作,所以沒(méi)有出現(xiàn)問(wèn)題。
3
.我的一點(diǎn)理解。對(duì)于堆棧溢出的錯(cuò)誤,我想大家都知道了,可是上面的這個(gè)堆溢出的話,好像即使有錯(cuò)誤也沒(méi)有什么問(wèn)題。我嘗試了使用
delete []str,或者是輸出str[8]等單元,都是顯示正確的結(jié)果,也沒(méi)有出現(xiàn)錯(cuò)誤。所以懷疑的是,難道堆上的這種分配這么安全,那我delete的話,到底是刪除的分配的4個(gè)字節(jié),還是拷貝過(guò)去的溢出的那個(gè)超過(guò)4個(gè)字節(jié)的那么多單元內(nèi)容呢?我的理解是,堆上分配的單元由于太隨意,靈活性太強(qiáng),所以對(duì)于錯(cuò)誤的發(fā)生就可能性很小。
4.
我寫(xiě)的調(diào)試代碼的一個(gè)新的問(wèn)題:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str1
=
new
char
[
4
];
7
str1
=
"
sfe
"
;
//如果去掉這一行,那么程序就可以正常運(yùn)行了……可是這個(gè)僅僅是初始化指針的啊。
8
char
str2[
4
]
=
"
adf
"
;
9
cout
<<
"
賦值前:
"
<<
endl;
10
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
11
cout
<<
"
str1內(nèi)容:
"
<<
str1
<<
endl;
12
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
13
cout
<<
"
str2內(nèi)容:
"
<<
str2
<<
endl;
14
strcpy(str2,
"
ooo
"
);
15
cout
<<
"
str2先賦值后:
"
<<
endl;
16
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
17
cout
<<
"
str1內(nèi)容:
"
<<
str1
<<
endl;
18
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
19
cout
<<
"
str2內(nèi)容:
"
<<
str2
<<
endl;
20
strcpy(str1,
"
iiiiii
"
);
21
cout
<<
"
str1后賦值后:
"
<<
endl;
22
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
23
cout
<<
"
str1內(nèi)容:
"
<<
str1
<<
endl;
24
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
25
cout
<<
"
str2內(nèi)容:
"
<<
str2
<<
endl;
26
27
}
28
程序在運(yùn)行一半后崩潰,典型的溢出了。但是,此代碼如果去掉上面初始化的那一行,程序就沒(méi)有錯(cuò)誤,而且我這里還計(jì)算發(fā)現(xiàn)對(duì)于堆棧的話沒(méi)有任何錯(cuò)誤,而堆的話故意寫(xiě)了個(gè)溢出的賦值,就是下面strcpy(str1,"iiiiii");
此時(shí)加上初始化的代碼后,問(wèn)題就來(lái)了,上個(gè)截圖。
從錯(cuò)誤的信息來(lái)看,
就是指向到 strcpy(str1,"iiiiii")的時(shí)候出錯(cuò)了的。
這個(gè)說(shuō)明:在我沒(méi)有對(duì)堆上的變量初始化的時(shí)候,如果越界了,沒(méi)有發(fā)現(xiàn)出錯(cuò)(它會(huì)自動(dòng)擴(kuò)展那個(gè)大小嗎?)。
而如果我對(duì)堆上的變量初始化的話,那么,再次復(fù)制的時(shí)候,如果越界了,就會(huì)發(fā)生錯(cuò)誤!
各位,知道為什么嗎?(
問(wèn)題好像更明朗了些,而且好像更深入了些。當(dāng)然,鉆這個(gè)牛角尖或許沒(méi)有必要!)
posted on 2010-01-13 23:14
deercoder
閱讀(2197)
評(píng)論(23)
編輯
收藏
引用
評(píng)論:
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)[未登錄](méi) 2010-01-14 00:54 |
Steven
你需要去了解下 堆(stack) 和 棧(heap) 的區(qū)別.
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 02:06 |
陳梓瀚(vczh)
因?yàn)閚ew的時(shí)候,系統(tǒng)可以選擇多給你幾個(gè)字節(jié),而且這并不是固定的數(shù)字。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 02:20 |
OwnWaterloo
1. 在C/C++代碼正確且C/C++實(shí)現(xiàn)(編譯器,運(yùn)行庫(kù))正確的情況下, C/C++語(yǔ)言保證得到正確的結(jié)果。
如果出現(xiàn)了錯(cuò)誤的結(jié)果, 可以問(wèn)why。
是"C/C++代碼正確"這個(gè)假設(shè)有誤? 還是"C/C++實(shí)現(xiàn)正確"這個(gè)假設(shè)有誤?
2. 如果C/C++代碼本身有某種錯(cuò)誤, C/C++實(shí)現(xiàn)不保證得到正確的結(jié)果, 也不保證得到錯(cuò)誤的結(jié)果, 更不保證會(huì)報(bào)告錯(cuò)誤的結(jié)果。
代碼的錯(cuò)誤有可能會(huì)被隱藏, 到其他時(shí)候發(fā)作。
這時(shí)候, 詢問(wèn)"為什么沒(méi)有出現(xiàn)錯(cuò)誤", 是不明智的。
C/C++實(shí)現(xiàn)沒(méi)有義務(wù)保證產(chǎn)生一個(gè)錯(cuò)誤。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 09:22 |
bluegene
我是這樣理解的,你用 new 分配的空間是放在堆(heap)里的,超出了的空間如果不被其它數(shù)據(jù)覆蓋暫時(shí)是沒(méi)有問(wèn)題的。固定分配的時(shí)候是在棧(stack)里分配的,其空間肯定是不能益處的。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 10:26 |
飯中淹
new分配的在堆里,你溢出了,只會(huì)導(dǎo)致堆出問(wèn)題。而你下面又沒(méi)有再使用堆,所以不會(huì)出錯(cuò)。
直接寫(xiě)的局部變量,分配在堆棧里,堆棧里有函數(shù)的返回地址,所以溢出了,覆蓋了返回地址,函數(shù)執(zhí)行完就出錯(cuò)了。
另外,有些 編譯器會(huì)生成對(duì)固定長(zhǎng)度數(shù)組的保護(hù)性檢測(cè)代碼,一旦溢出,就會(huì)彈出提示。早先在vs2003還是vs2002的時(shí)候見(jiàn)過(guò)。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 10:27 |
zuhd
對(duì)于堆來(lái)講,生長(zhǎng)方向是向上的,也就是向著內(nèi)存地址增加的方向;對(duì)于棧來(lái)講,它的生長(zhǎng)方向是向下的,是向著內(nèi)存地址減小的方向增長(zhǎng)。看下反匯編代碼一切都明白了
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 10:31 |
zuhd
棧里有函數(shù)的返回地址,所以溢出了,覆蓋了返回地址,函數(shù)執(zhí)行完就出錯(cuò)了。
==========================================
這句話是重點(diǎn),當(dāng)ret的時(shí)候,call下條指令時(shí)異常了,如果你多定義了幾個(gè)變量,讓棧溢出不到函數(shù)的返回地址,錯(cuò)誤依然不會(huì)出現(xiàn)的
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)[未登錄](méi) 2010-01-14 12:43 |
vane
出錯(cuò)是必然的,沒(méi)問(wèn)題的時(shí)候你比較幸運(yùn)。
#include <iostream>
using namespace std;
#pragma pack(push)
#pragma pack(1)
int main()
{
char *str = new char[5];
strcpy(str,"Good");
strcat(str,"I Love C++");
cout << str << endl;
}
#pragma pack(pop)
你可以這么試一下
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 15:53 |
壞人
越界,后果自負(fù)。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 15:57 |
turygo
數(shù)組越界都是這樣的,錯(cuò)誤不是立刻出現(xiàn),而是不知道什么時(shí)候就出問(wèn)題了,而且到那個(gè)時(shí)候代碼量一大,你根本無(wú)從找起錯(cuò)誤。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 17:30 |
零宇
建議樓主補(bǔ)充一下基礎(chǔ)知識(shí)
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 19:22 |
besterChen
LZ遇到的問(wèn)題是堆和棧溢出的問(wèn)題,您說(shuō)的可能是靈異事件是因?yàn)槌绦驅(qū):投褭z查導(dǎo)致的。
不知道LZ用的是什么開(kāi)發(fā)環(huán)境。我學(xué)習(xí)C語(yǔ)言也剛好學(xué)到這里,自己在VC6得開(kāi)發(fā)環(huán)境下仔細(xì)調(diào)試過(guò)其過(guò)程并做了筆記,地址:
http://www.shnenglu.com/besterChen/archive/2010/01/13/105538.html
希望能對(duì)樓主有幫助,由于自己也是初學(xué),希望LZ能多多指正日志中的錯(cuò)誤……
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 22:30 |
wildpointer
這種越界的事,你知道會(huì)錯(cuò)還用。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:21 |
劉暢
@Steven
好的,謝謝。我覺(jué)得也應(yīng)該是這方面的問(wèn)題。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:22 |
劉暢
@陳梓瀚(vczh)
可是多出來(lái)的字節(jié)是無(wú)法預(yù)知的啊。而且如果太多的話還是會(huì)溢出的吧。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:25 |
劉暢
@bluegene
謝謝,之前一直覺(jué)得和內(nèi)存的分配有關(guān),堆棧和堆確實(shí)不大一樣。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:27 |
劉暢
@飯中淹
@zuhd
謝謝你們的精彩解釋,受益匪淺。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:29 |
劉暢
@besterChen
呵呵,一起學(xué)習(xí)!
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-14 23:29 |
劉暢
@零宇
好的,謝謝!
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-15 00:05 |
Benjamin
strcpy等在一些公司的編碼規(guī)范中是禁用的。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn) 2010-01-15 00:55 |
空明流轉(zhuǎn)
bushuoshale...
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)[未登錄](méi) 2010-01-15 09:47 |
Steven
@劉暢
呵呵,我把堆和棧的英文寫(xiě)反了。。。
以前寫(xiě)C 程序的時(shí)候經(jīng)常用到大量的 strcopy, strcat之類的函數(shù),偶爾出錯(cuò)是在所難免的,只要是人總是有算錯(cuò)的時(shí)候,尤其有些時(shí)候混合處理unicode和ansi串的時(shí)候,算字符串長(zhǎng)度是容易出錯(cuò)的。
所以后來(lái)寫(xiě) C++ 的時(shí)候我盡量避免去使用這類函數(shù)了,而是傾向于用 stl的string wstring, 盡量用 stl的容器類去代替自己分配管理內(nèi)存。
代碼規(guī)模大到一定程度,除了緩沖溢出實(shí)在是很難找。
順便說(shuō)下,
http://www.coverity.com/products/static-analysis.html
這個(gè)東西很強(qiáng)大,可以檢測(cè)到你代碼里潛在的溢出問(wèn)題。
回復(fù)
更多評(píng)論
#
re: 【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)
2010-01-15 12:43 |
劉暢
@Steven
謝謝,去看看,學(xué)習(xí)了……
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
堅(jiān)持記錄,筆耕不輟,筆記是最好的學(xué)習(xí)方法!
<
2010年1月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(87)
ACM(1)
Android(4)
C++(7)
CTeX和LateX(1)
Git(3)
Java(4)
MFC程序設(shè)計(jì)入門(mén)(8)
OpenCV(1)
Python(3)
Shell/Bash(1)
SQL(1)
Unix/Linux(23)
Vim(3)
大學(xué)公開(kāi)課(3)
讀書(shū)(4)
環(huán)境配置(1)
生活感悟/日記(18)
圖像識(shí)別算法及原理(1)
隨筆檔案
(145)
2014年12月 (1)
2013年3月 (1)
2012年7月 (2)
2012年6月 (5)
2012年5月 (2)
2012年4月 (2)
2011年12月 (1)
2011年11月 (2)
2011年10月 (8)
2011年9月 (2)
2011年8月 (4)
2011年6月 (2)
2011年5月 (5)
2011年4月 (3)
2011年3月 (3)
2010年6月 (5)
2010年5月 (5)
2010年4月 (3)
2010年3月 (16)
2010年2月 (56)
2010年1月 (11)
2009年12月 (2)
2009年11月 (3)
2009年10月 (1)
文章分類
(70)
C/C++(14)
JAVA(6)
Linux/Unix(6)
MFC(5)
OpenCV / OpenGL(6)
編程體會(huì)和收獲(3)
常見(jiàn)編譯器錯(cuò)誤解決辦法(5)
深入理解計(jì)算機(jī)系統(tǒng)(2)
生活的體會(huì)和感悟(5)
實(shí)習(xí)/讀研(1)
數(shù)據(jù)結(jié)構(gòu)和算法分析(9)
雜談(8)
文章檔案
(70)
2011年11月 (1)
2011年10月 (1)
2010年3月 (8)
2010年2月 (2)
2010年1月 (3)
2009年12月 (21)
2009年11月 (26)
2009年10月 (5)
2009年9月 (3)
相冊(cè)
computer picture
ACM與算法比賽
Google Code Jam
Top Coder
北大ACM
杭電ACM
LaTex和Tex學(xué)習(xí)
LaTex and Tex
Tex,LaTex,CTex學(xué)習(xí)
電子書(shū)下載
不錯(cuò)的電子書(shū)免注冊(cè)下載
雜志下載(經(jīng)濟(jì)學(xué)人等)
聯(lián)系方式
我的豆瓣主頁(yè)
學(xué)習(xí)論壇
C++編程
VC知識(shí)庫(kù)
超多C/C++資料和源碼下載
科研小木蟲(chóng)
提問(wèn)必答網(wǎng)站(牛人輩出啊!)
英語(yǔ)網(wǎng)站(長(zhǎng)期學(xué)習(xí))
New York Times
華爾街日?qǐng)?bào)
記單詞,捐大米
經(jīng)濟(jì)學(xué)英文網(wǎng)
普特網(wǎng)站
普特英語(yǔ)應(yīng)用(有趣的學(xué)習(xí))
譯言網(wǎng)|譯文庫(kù)
中國(guó)日?qǐng)?bào)
源碼網(wǎng)站
codeproject
google代碼搜索
programersheaven
sourceforge
程序員聯(lián)合開(kāi)發(fā)網(wǎng)
最新隨筆
1.?此博客停止更新
2.?Adboe Reader提示中文字體有問(wèn)題
3.?Python字符串換行處理
4.?如何轉(zhuǎn)換^M行末符號(hào)
5.?斯坦福大學(xué)開(kāi)放課程--編程范式(四)
搜索
積分與排名
積分 - 903415
排名 - 15
最新隨筆
1.?此博客停止更新
2.?Adboe Reader提示中文字體有問(wèn)題
3.?Python字符串換行處理
4.?如何轉(zhuǎn)換^M行末符號(hào)
5.?斯坦福大學(xué)開(kāi)放課程--編程范式(四)
最新評(píng)論
1.?re: Git Stash用法[未登錄](méi)
@陳梓瀚(vczh)
人稱輪帶逛!!!
--q
2.?re: Git Stash用法
@Loaden
這個(gè)B裝的好
--doubi
3.?re: Chrome神器Vimium快捷鍵學(xué)習(xí)記錄
哦啦啦啦啦
--阿里河
4.?re: Chrome神器Vimium快捷鍵學(xué)習(xí)記錄
希望能添加更新后的功能翻譯
--Vi.Ci
5.?re: Chrome神器Vimium快捷鍵學(xué)習(xí)記錄
@coolbit
謝謝,學(xué)會(huì)了
--xin
閱讀排行榜
1.?Git Stash用法(300675)
2.?Chrome神器Vimium快捷鍵學(xué)習(xí)記錄(67508)
3.?GitHub使用簡(jiǎn)介(35350)
4.?Ubuntu下硬盤(pán)的自動(dòng)掛載(23763)
5.?Ubuntu更新包管理器失敗:Requires installation of untrusted packages問(wèn)題解決(18491)
評(píng)論排行榜
1.?【歡迎各位留言討論】C++中運(yùn)算符New的一個(gè)疑問(wèn)【新的問(wèn)題!】【各位繼續(xù)關(guān)注討論啊!】(23)
2.?Git Stash用法(21)
3.?Chrome神器Vimium快捷鍵學(xué)習(xí)記錄(19)
4.?C++友元的一個(gè)問(wèn)題-----------由派生類訪問(wèn)基類的私有成員(10)
5.?OpenCV學(xué)習(xí)筆記(一)(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 deercoder
久久久久久国产精品无码下载
|
亚洲国产精品久久久久
|
伊人情人综合成人久久网小说
|
性做久久久久久久久久久
|
久久精品国产免费观看
|
久久精品国产第一区二区三区
|
久久精品国产99国产电影网
|
亚洲国产综合久久天堂
|
亚洲国产天堂久久综合
|
一本色道久久综合亚洲精品
|
国产精品对白刺激久久久
|
久久成人精品
|
日韩精品久久久肉伦网站
|
草草久久久无码国产专区
|
亚洲精品无码专区久久同性男
|
一本色道久久88加勒比—综合
|
久久伊人亚洲AV无码网站
|
婷婷久久久亚洲欧洲日产国码AV
|
99久久免费只有精品国产
|
亚洲va久久久久
|
91精品国产高清久久久久久国产嫩草
|
精品乱码久久久久久夜夜嗨
|
久久精品国产精品亚洲精品
|
国产成人精品综合久久久
|
东方aⅴ免费观看久久av
|
久久精品国产亚洲av瑜伽
|
亚洲精品国精品久久99热一
|
久久精品这里只有精99品
|
久久综合给久久狠狠97色
|
色婷婷久久综合中文久久一本
|
久久永久免费人妻精品下载
|
久久久久99精品成人片
|
久久r热这里有精品视频
|
亚洲AV无一区二区三区久久
|
色婷婷噜噜久久国产精品12p
|
亚洲欧美精品伊人久久
|
久久天天躁狠狠躁夜夜网站
|
久久婷婷国产剧情内射白浆
|
久久精品一区二区三区中文字幕
|
精品视频久久久久
|
成人综合伊人五月婷久久
|