[綜合]無題 無名 ID:71DhzlZY 17/09/24(日)01:06:08 No.9913841
評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2017-09-23 14:37:39
島民好
這裡是程式廚
https://github.com/dghkd/KomicAheGao/releases
雖然沒有改版 但今晚不知為何突然想和島民聊天
有島民願意跟我聊天嗎
|_ハ;
|・д・)
|⊂ノ′
|-J
無題 無名 ID:Ic8A3OgA 17/09/24(日)01:07:39 No.9913844 寮甚麼?
無題 無名 ID:iWMvUuZU 17/09/24(日)01:07:53 No.9913847 寫得不錯
存複製文很方便 (・∀・)
無題 無名 ID:R8iprFv6 17/09/24(日)01:11:25 No.9913865 ☺程式廚的午茶教學時間☺
怎麼昨天沒出現?
無題 無名 ID:71DhzlZY 17/09/24(日)01:14:59 No.9913884 >>9913844真是個好問題
我最近越來越覺得自己有社交恐懼
面對別人時都不知道要聊什麼
即使是對好幾年的好友同學也一樣
所以越來越不敢講話、甚至會結巴
>>9913847✌(´◓Д◔`)✌
>>9913865沒有注意到呢
我大多都到深夜才上島
剛剛搜尋了一下
是PHP耶
我不會丸PHP(´;ω;`)
無題 無名 ID:ipFD0deg 17/09/24(日)01:16:59 No.9913896 寫個能聊天的程式吧
無題 無名 ID:R8iprFv6 17/09/24(日)01:17:32 No.9913901 >>9913884原來此除非彼廚。
話說,你怎麼沒有跟我們的好朋友,黃色小鴨說話?
就算是在艱澀難懂的CODE,小鴨都會耐心的聽我們說丸,
才不像混帳PM,每次都用【這是技術問題,你是專業】來敷衍我們!
無題 無名 ID:Jth2Q6vo 17/09/24(日)01:19:28 No.9913909 上次那個跟我說指標跟參考不一樣的要不要來解釋一下
除了符號長得不一樣外到底還有什麼差別?
無題 無名 ID:Ic8A3OgA 17/09/24(日)01:21:40 No.9913915 >>9913884你想太多了阿
外面的人不是都只會聊一些屁話而已嗎??
比如這樣
"等等要吃甚麼?" "等等上甚麼課?" "欸~幹! 我忘記做報告" "我昨天兩點睡www" "幹你手機OOO的喔!" "甚麼? 下禮拜社團博覽會喔?" "你剛剛吃了甚麼阿?" "诶幹! 我忘記帶OOO" "幹這個課真的好難喔" "幹這個老師真的好基八喔" "對阿 基掰人 超基掰"
之類的
無題 無名 ID:Gqu/..jo 17/09/24(日)01:21:47 No.9913917 無題 無名 ID:R8iprFv6 17/09/24(日)01:23:15 No.9913929 >>9913909我好像曾經對人說過類似的話。
指標基本上是整數(記憶體區塊),換言之你可以指標某個指標的位置。
同時應用時,指標需要重新指定格式。
至於參照,他可以算是指標的封裝,移除了一些指標的危險運用。
雖然本質也是記憶體位置,但實際運用時相對指標安全不少。
//-----
指標(Pointer)
參考(Reference)
無題 無名 ID:R8iprFv6 17/09/24(日)01:26:58 No.9913947 >>9913929另外這邊的Reference不等同C++的
我只是比較我C#與C感受差異而已。
無題 無名 ID:71DhzlZY 17/09/24(日)01:28:09 No.9913952 無題 無名 ID:R8iprFv6 17/09/24(日)01:29:27 No.9913959 無題 無名 ID:Jth2Q6vo 17/09/24(日)01:31:30 No.9913972 >>9913929>>至於參照,他可以算是指標的封裝
>>本質也是記憶體位置
我也是這樣覺得
邏輯上是一樣的東西,只是符號長得不一樣、細節操作限制不一樣
還有就是用人類語言解釋時習慣使用不同套說法
可是上次就有人一臉「ㄎㄎ,那是你不懂」的樣子跟我說兩者完全不同
害我介意到現在
>>9913947叫同一個名字的東西應該會是差不多的邏輯吧
至少我沒聽過哪個語言裡double是整數
無題 無名 ID:71DhzlZY 17/09/24(日)01:32:10 No.9913976
無題 無名 ID:R8iprFv6 17/09/24(日)01:35:09 No.9913988 >>9913972C++的Reference好像不太一樣。
剛才GOOGLE了一下,粗淺看一下好像是不同記憶體,
但是會把值複製過去。
CODE就是這樣,環境/版本不同,甚麼又不太一樣。
所以實測很重要。
無題 無名 ID:wNjEI9/M 17/09/24(日)01:37:18 No.9914001 >>9913929我看那本VS2015設計經典
有點不懂
他說class 是Reference
那class 內的int double 之類的value,
是Reference還是value?
當CLASS外呼叫class內的int k
是在叫Reference.Reference?
還是Reference.value?
他把英文專有名都變中文 更難懂
無題 無名 ID:R8iprFv6 17/09/24(日)01:43:20 No.9914036 >>9914001VS2015,應該就是C#
基本上C#走的Reference比較大眾,我解釋一下。
物件(Object,new Class產生),處理時都是記憶體的指派,稱之為參照(Reference)。
所以
ClassOhayou dtoOhayou = new ClassOhayou();
ClassOhayou dtoRefer = dtoOhayou;
此時dtoOhayou的"內部異動"會影響到dtoRefer ,反之亦然。
EX:
dtoOhayou.face = "肉餅";
//dtoRefer.face也會變成肉餅
//至於呼叫內部函式產生的異動也是
至於外部異動則會改變參考位置
EX: dtoRefer = null;
//此時dtoOhayou 還是存在的。
無題 無名 ID:Jth2Q6vo 17/09/24(日)01:44:33 No.9914042 >>9913988應該沒這種事吧...
那樣不是很浪費效能嗎
傳參考不就是為了避免複製整個class嗎
>>9914001reference裡面的value
總之當你從class外面修改裡面的int k
那個class裡面看到的k會是被改過的
無題 無名 ID:R8iprFv6 17/09/24(日)01:44:55 No.9914047
>>9914001至於DTO則是一個概念,不懂GOOGLE一下,幫助會很大。
這個概念搞懂後,很多架構都可以簡化成易懂易改。
無題 無名 ID:R8iprFv6 17/09/24(日)01:46:36 No.9914053
>>9914042>htps://dotblogs.com.tw/brian/2012/10/18/77588
實際上,有些時候真的會需要這種"複製"的功能。
無題 無名 ID:71DhzlZY 17/09/24(日)01:47:41 No.9914061
無題 無名 ID:7y.6rTzo 17/09/24(日)01:52:09 No.9914074
這是啥
我也沒聽過
無題 無名 ID:wNjEI9/M 17/09/24(日)01:54:43 No.9914085 >>9914036感謝
看你的解說
感覺這Reference內的value 其實也是Reference?
如果我改dtoRefer.face = "粗乃丸"
dtoOhayou.face 會粗乃丸嗎?
另外
對就像這樣 常常看到只有中文
參照,類別,型別, (參數,引數)????
看下去根本不知道他說的是什麼
是class?object?type?var?arg?ref?只有中文分不出來是那一個英文(噴血
無題 無名 ID:R8iprFv6 17/09/24(日)01:58:44 No.9914100 >>9914085你Reference給弄糊塗了,他只是一個機制。
請稱呼物件(Object)
如果物件,裡面的屬性(Property),也是屬於Object的話,
那走的機制也會一樣。
所以第一個問題
>如果我改dtoRefer.face = "粗乃丸"
>dtoOhayou.face 會粗乃丸嗎?
--->會
第二個問題
>是class?object?type?var?arg?ref?只有中文分不出來是那一個英文(噴血
實作一個超簡易CODE來跑DEBUG測試就知道
無題 無名 ID:Jth2Q6vo 17/09/24(日)01:59:57 No.9914105 >>9914085>>dtoOhayou.face 會粗乃丸嗎?
會
>>參照,類別,型別, (參數,引數)????
就我所知
參考=參照=reference
類別=class
型別=型態=type
參數=argument=引數=parameter
最後這組有兩個英文,所以應該是不一樣的東西
但我不知道他們有什麼差別...
無題 無名 ID:7y.6rTzo 17/09/24(日)02:03:13 No.9914110 >>9914105傳進function裡的叫parameter
寫在function裡的叫argument
沒什麼意義
無題 無名 ID:R8iprFv6 17/09/24(日)02:04:19 No.9914114 >>9914105>htp://meebox.blogspot.tw/2012/07/parameter-argument.html
現代程序員所必備技能:GOOGLE
無題 無名 ID:R8iprFv6 17/09/24(日)02:05:19 No.9914121 >>9914114>htps://stackoverflow.com/questions/1788923/parameter-vs-argument
技能之二:stackoverflow
無題 無名 ID:Jth2Q6vo 17/09/24(日)02:06:35 No.9914126 無題 無名 ID:7y.6rTzo 17/09/24(日)02:06:52 No.9914129
無題 無名 ID:wNjEI9/M 17/09/24(日)02:07:04 No.9914131 無題 無名 ID:rAZqEUiw 17/09/24(日)02:08:01 No.9914134
foo 方法有宣告一參數 value。
void foo(int value);
變數 x 作為 foo 方法的引數。
int x = 2;
foo(x);
無題 無名 ID:R8iprFv6 17/09/24(日)02:08:09 No.9914136
>>9914126>htp://www.ly.gov.tw/03_leg/0301_main/defined/definedView.action?id=2314&lgno=00022&stage=8&atcid=2314
英文算還好了
無題 無名 ID:R8iprFv6 17/09/24(日)02:10:18 No.9914147 >>9914131至少你還有看書,還救得起來。
那個午茶廚,我有點想放棄治療了(攤)
還有那個火影吐血廚也是,放生好了(望)
無題 無名 ID:7y.6rTzo 17/09/24(日)02:11:41 No.9914152 無題 無名 ID:wNjEI9/M 17/09/24(日)02:13:46 No.9914157 >>9914147所以
其實是不是這樣
如果我改dtoRefer = OtherObject
dtoRefer 所存下的地址就會從dtoOhayou轉去用OtherObject的地址
而如果我改dtoRefer.face = "粗乃丸"
就是直在把dtoRefer.face存著的地址內的值 更改為"粗乃丸"
這樣?
無題 無名 ID:R8iprFv6 17/09/24(日)02:14:48 No.9914163 >>9914152那只是表面上,骨子沒打穩沒啥軟用,要不是自己爆炸就是把別人搞到爆炸。
他那個800小時有400小時去看書(含實測)打底,
可能開發不到100小時(含除錯),
後續要新的功能也可以走的順遂。
而且重點是"它是社會人學來工作的",不是學生了。
觀念沒轉正,只能說是害人害己。
無題 無名 ID:R8iprFv6 17/09/24(日)02:16:24 No.9914166 >>9914157所以異動會如下
>OtherObject.face,內部的值為"粗乃丸"
>dtoOhayou.face ,內部的值沒有被異動。
無題 無名 ID:7y.6rTzo 17/09/24(日)02:19:39 No.9914173 >>9914163勸你不要打擊我的偶像音game喔
600小時也才三個月
在理解程式上已經很快了
社會人士學得又不會比較快
無題 無名 ID:Jth2Q6vo 17/09/24(日)02:22:38 No.9914180 >>9914157有個人叫做馬英九(dtoOhayou),如附...算了不要附圖好了
中華民國總統(dtoRefer)指的就是這個馬英九(=dtoOhayou)
如果你把中華民國總統打成肉餅臉(dtoRefer.face="粗乃丸")
那馬英九就會變成肉餅臉(dtoOhayou.face=="粗乃丸")
但是後來中華民國總統換人當了,現在這個稱呼指的是蔡英文(OtherObject)
如果你現在在中華民國總統面前耍白癡,讓他黑人問號(dtoRefer.face="???")
那蔡英文就會黑人問號(OtherObject.face=="???"),但馬英九還是肉餅臉(dtoOhayou.face=="粗乃丸")
無題 無名 ID:R8iprFv6 17/09/24(日)02:22:50 No.9914181 >>9914173可惜有大缺點:妄想一步登天。
這種人思考迴路很容易缺東缺西,然後成為搞爆工作的兇手。
實務上,我最怕遇到這種人,無論是PM還是PG,亦或客戶。
無題 無名 ID:R8iprFv6 17/09/24(日)02:24:20 No.9914188 無題 無名 ID:9NMiaQA6 17/09/24(日)02:24:49 No.9914190 想請教一下
所以reference跟他參考的物件會互相影響嗎?
內部異動和外部異動的部分有點不太了解
無題 無名 ID:Jth2Q6vo 17/09/24(日)02:26:20 No.9914193 >>9914181你要求太高了啦
菜逼八本來就需要一點時間調適心態、搞清楚現實
讓他多寫幾個案子多失敗幾次就會慢慢改過來了
你也當過菜逼八、也雷過吧
雖然我也不想在工作上踩到雷...
無題 無名 ID:R8iprFv6 17/09/24(日)02:29:39 No.9914207 >>9914193我修課的時候去寫ACM每天搞到半夜兩三點就為了殺死自己腦細胞與成見時就覺悟了。
他前面練習寫啥遞迴河內塔還是排序有的沒有時,我都有偷偷用丸點過了,完全無視。
現在還這個樣,先放生等他爆炸後悔改再看看吧。
無題 無名 ID:9NMiaQA6 17/09/24(日)02:31:07 No.9914211
無題 無名 ID:R8iprFv6 17/09/24(日)02:31:33 No.9914216 >>9914207同時套用大刀說過的話
【學校就好比工廠,把你們加工後出品,
而好的把關尤其重要,把不良品淘汰就是我的責任】
無題 無名 ID:7y.6rTzo 17/09/24(日)02:34:57 No.9914225
無題 無名 ID:wNjEI9/M 17/09/24(日)02:35:10 No.9914228 >>9914180>>9914166會丸了
>>9914188來丸
另一個問題
ClassPosion TestClass = new TestClass();
他一開始設計用new 來初始化
為什麼不把NEW去掉 直接ClassPosion TestClass 時就初始化到default值?
另外 有沒有只宣告ClassPosion TestClass;
沒用new 就直接把TestClass拿去用的時候?
無題 無名 ID:Jth2Q6vo 17/09/24(日)02:35:38 No.9914229
>>9914190reference就是兩個名字指稱同一個物件實體
不管你是用總統的名字還是馬英九的名字去改變內部數值,結果兩者都會一起改變
因為他們指的根本就是同一個東西
不是「長得一樣」,而是「同一個」
其實我很討厭跟人家解釋reference
我比較喜歡建議對方去學C的pointer(指標)
pointer學通了reference也會跟著通
因為他們本質根本是一樣的
只是使用不同的哲學來解釋同一套邏輯系統
這也就是我上面說的
>>用人類語言解釋時習慣使用不同套說法
而我認為pointer的解釋方式比較易懂
不管pointer跟reference哪個語法看起來比較漂亮
還是先搞清楚這套邏輯是怎麼運作的,再去追求語法簡潔比較好
雖然通常不會有人因為這樣一句話就跑去學另一個語言啦...
無題 無名 ID:Gs3p27VM 17/09/24(日)02:36:44 No.9914233
有個說法應該是說reference基本上就是別名
但如樓上
去學C,把C搞懂
就會了解世界上只有pass by value
無題 無名 ID:R8iprFv6 17/09/24(日)02:38:16 No.9914236 >>9914228>1
var TestClass = new TestClass();
>2
function void Start(){
ClassPosion TestClass;
AssignPosion(TestClass);
}
function void AssignPosion(ClassPosion TestClass)
{
TestClass = new ClassPosion();
}
無題 無名 ID:R8iprFv6 17/09/24(日)02:39:44 No.9914239
無題 無名 ID:wNjEI9/M 17/09/24(日)02:42:43 No.9914248 >>99142361.c# 為什麼就是要new來new去的 (哭
2. 最後還是一樣new了阿 (撞牆
無題 無名 ID:Jth2Q6vo 17/09/24(日)02:43:46 No.9914250 >>9914228你仔細看會發現dtoOhayou跟dtoRefer其實宣告時的型態是一樣的
他們兩個都是reference
只是習慣上把dtoOhayou固定住不更動、只更動dtoRefer
才可以區分出一個是本體一個是參考
new XXX()就是生出一個實體分配給reference
不這樣寫的話,TestClass的初始值會是NULL而不是一個class的實體
以上例來說就是
馬英九這個名字其實也可以換指別人,只是平常不會這樣用而已
被稱為馬英九的「那個人」本身是沒有一個絕對永遠跟隨他的名字存在的
說不定那個人早就被偷偷幹掉了,現在看到的馬英九只是替身而已
而new XXX()就是「有個人」這句話
這句話把一個人拉進故事,然後才把他取名為馬英九
>>沒用new 就直接把TestClass拿去用的時候?
你看dtoRefer,就是這樣用
無題 無名 ID:7y.6rTzo 17/09/24(日)02:44:53 No.9914257 無題 無名 ID:R8iprFv6 17/09/24(日)02:53:47 No.9914288
>>9914248因為幹你娘的,CLASS只是一句口號。
如果沒有實踐,它永遠都是空話,永遠是NULL。
就好像[提升勞工待遇],塞你娘。
>var 提升勞工待遇 = 議會();
//塞你娘沒東西啦
function classLaw 議會(){
classLaw 提升勞工待遇;
return 提升勞工待遇 as classLaw;
}
Class 提升勞工待遇 : classLaw
{
private int SalaryIncrease{get;set;} = configDefualt.Salary;
private int WorkHourDecrease{get;set;} = configDefualt.WorkHour;
public 提升勞工待遇 一例一修(){
//do nothing
}
}
無題 無名 ID:Gs3p27VM 17/09/24(日)02:54:08 No.9914290 >>9914248因為C#當初是抄java的
而java當初的設計就是說,通通都用new
使用new配置的記憶體跟一般在function內宣告的記憶體差別就在於
用new配置的會丟到heap去
直接宣告會丟在call stack裡
如果你寫C++,就有機會不用new
但這時候你就要擔心你到底要傳值還是傳址
然後會有很多物件生命週期的東西要擔心
很有可能到最後你就會直接改用指標宣告,用new配置
就正好是像java設計的那樣子...
無題 無名 ID:iJQRW53o 17/09/24(日)02:58:08 No.9914299 這串聊天的等級真高
無題 無名 ID:wNjEI9/M 17/09/24(日)03:02:32 No.9914308 無題 無名 ID:R8iprFv6 17/09/24(日)03:05:17 No.9914314
無題 無名 ID:7y.6rTzo 17/09/24(日)03:09:23 No.9914323
無題 無名 ID:Jth2Q6vo 17/09/24(日)03:13:10 No.9914330 >>9914290這其實是OOP發展歷史
C#是抄java的,java是抄完成體的C++,C++則是抄C
C++有很多種方式可以產生、傳遞物件
但他們玩C++玩到成仙之後發現
不管什麼class通通用new來產生、然後丟給pointer去操作是最好用的
然後java進一步把這點發揚光大
不讓菜逼巴走冤枉路了,強迫你們通通給我new
反正練到成仙還是要走回這條老路,不如一開始就禁止你們走歪
接著C#又抄了java
但是他們又覺得連int都要new有點煩
所以發明了一招叫做基礎型態就by value、類別就by reference
把世界帶向了破滅的未來
從C#進門的人不會知道這些錯綜複雜的關係
所以搞都搞不懂這個神祕的new到底是三小
偏偏這些人捨棄了pointer語法改用畫面更漂亮卻更容易讓菜逼八混淆的reference
套上一層跟蘋果一樣潮但根本狗屁不通沒人聽得懂的新說法來解釋這東西
所以一天到晚有人在問reference到底是什麼意思
對了,我根本不會java也不會C#,連他們的hello world都沒寫過
以上是我用我對他們粗淺至極的認知寫的,請勿過信
>>有un-new嗎 把暫時不用的class解放掉
C++有,叫delete
java以上的好像沒有,印象中是把所有指向他的名字通通=NULL就會自己消失了
無題 無名 ID:P1XnvWeA 17/09/24(日)03:20:06 No.9914342
島萌居然有人寫物件的
無題 無名 ID:wNjEI9/M 17/09/24(日)03:21:05 No.9914343 >>9914330我以前只看過一點C++ 到POINTER那樣
沒學過java
看到new時就一直覺得有東西好像怪怪的
就你和Gs3p27VM 點出這個書中完全沒說的東西
明明很重要
總之你們說和java有關 我不管我信了wwww
現在回想 c++的pointer是heap區嗎w? 我只記得是記憶體位置
無題 無名 ID:h1USjOzE 17/09/24(日)03:26:40 No.9914350 程式廚喜歡超可愛鯨頭嗎!
無題 無名 ID:ipFD0deg 17/09/24(日)03:27:22 No.9914352 程式廚你最喜歡什麼角色
無題 無名 ID:wNjEI9/M 17/09/24(日)03:27:38 No.9914353 無題 無名 ID:IAcjPIfw 17/09/24(日)03:33:22 No.9914367 >>9914299結果整串原PO只回個4篇廢文在裝死和講幹話
之後就整個消失不見了
什麼都不會還敢說要來聊天
難怪會社交障礙 看了感覺真可憐wwwwww
無題 無名 ID:soWVU5/6 17/09/24(日)03:33:54 No.9914368
無題 無名 ID:P1XnvWeA 17/09/24(日)03:36:00 No.9914373
>>9914367那個教學的
討論到很多記憶體配置的問題阿
除非想當常用語言用
不然不會那麼深入
我JAVA學過後就忘了 只記一套C++物件就好
無題 無名 ID:Jth2Q6vo 17/09/24(日)03:38:09 No.9914379 >>9914343我不知道什麼heap區
那東西在C++哲學裡不需要被知道
pointer是變數的一種,跟int一樣都是一塊整數
怎樣會被改變怎樣不會等等的性質也都跟(C#的)int一樣,全部
by value
而pointer存的內容是一個「記憶體位址」
告訴你在記憶體上的某塊區域,有一個你要的東西存在
當你手上有一個pointer
你除了可以讀寫pointer本身的值(一塊看不懂的記憶體位址)以外
還可以讀寫這個pointer所指向的那塊記憶體上所存有的東西
然後為了在讀寫那個被指到的東西時能正確判斷他的型態
所以pointer分成「int的pointer」「classA的pointer」「class的pointer的pointer的pointer」等等,彼此視為不同的型態
而C++的new
是把沒被使用的記憶體割一塊標記為已使用,然後把位址傳給你
你把這塊位址用pointer記下來後,就可以把那塊記憶體當成是裡面有個變數來讀寫
也可以把這個pointer傳給function、複製多份等等,反正就只是一條地址
等你通通用完後再用delete把那塊記憶體標記為未使用,還給系統
之後你必須自己手動忘掉他,不准再讀寫那塊記憶體了,否則就會當機
pointer本身的生命期等等都跟一般的int一樣
function結束就會被消滅等等
可是他所指向的那塊記憶體不屬於任何一個function,只有被delete才會消失
就算其中一個pointer不見了,還是可以被其他指著他的pointer繼續使用
java跟C#的new跟上面的原理是一樣的
只是他們用沒人聽得懂的機掰哲學來解釋
你回去寫C++,玩熟pointer後就通通都會懂了
無題 無名 ID:2CN9FPvY 17/09/24(日)03:42:15 No.9914384 哎各位島民好,請問有沒有辦法在線性時間內把一個字串的陣列依照ascii排序好?
考慮實際運算時間的話(・д・)...
無題 無名 ID:P1XnvWeA 17/09/24(日)03:42:40 No.9914386
這個程式廚也太猛
洋洋灑灑打一堆 該不會再準備某些考試吧
無題 無名 ID:71DhzlZY 17/09/24(日)03:45:06 No.9914390
無題 無名 ID:Jth2Q6vo 17/09/24(日)03:49:15 No.9914397
>>9914384排序演算法的時間複雜度最低值是O(n logn)
接近但沒辦法線性
但如果你說的是以1Byte為單位的字串
要把"komica"排成"acikmo"這樣
那倒是有特殊的辦法
[aa]
void sortString(char *str,int max)
{
int count[256];
for(int i=0;i<256;i++)
count[i]=0;
for(int i=0;i<max;i++)
count[str[i]]++;
int ci=0;
for(int i=0;i<max;i++)
while(count[ci]==0)
ci++;
str[i]=ci;
count[ci]--;
}
[/aa]
無題 無名 ID:Jth2Q6vo 17/09/24(日)03:53:07 No.9914407 夜晚,在一個遠離人煙的森林
有個人狼狽地趴在地上,旁邊站著兩個黑衣人
『你就是馬英九吧?』
『不...應該說--曾經是馬英九的那個人。』
「你...你們要幹什麼?我已經跟你們沒有關係了才對啊!」
『是啊,你現在已經跟黨沒有關係了。』
『新的馬英九演得很好,沒有人發現總統已經被掉包了。』
『你已經不是馬英九了。』
『也不是中華民國總統。』
『你只是個沒有名字的肉塊。』
『一個...消失了也沒人會注意到的肉塊!』
一聲槍響劃破寧靜的夜空,然而附近沒有會聽到槍響的人存在。
這世上少了一個人,可是沒有任何一個名字受到影響。
黑衣人收拾著現場,衣領飄動之間隱然可見他們胸前的名牌寫著他們的代號:『Garbage Collector』。
>>把所有指向他的名字通通=NULL就會自己消失了
無題 無名 ID:80.fFgss 17/09/24(日)03:54:11 No.9914411
python dude, python
無題 無名 ID:wNjEI9/M 17/09/24(日)04:01:10 No.9914429
無題 無名 ID:wNjEI9/M 17/09/24(日)04:03:05 No.9914434 無題 無名 ID:Jth2Q6vo 17/09/24(日)04:10:11 No.9914446 >>9914434java以上的語言
如果有個實體(肉塊)不被任何名字指稱
那麼就會有一個叫做garbage collector的機制來消滅那些東西
這就是你剛剛問的un-new
只要把所有名字都改掉他就會自動被處理掉了
C++則不一樣
你要自己手動使用delete把他幹掉,不會有人幫你做這種事
如果你不幹掉他就把pointer全部改填其他的位址
那這世界上就會多一塊沒有名字的肉塊四處遊蕩,稱為memory leak
如果這種行為發生在某個持續運作的迴圈裡,無名肉塊就會越來越多
最後把整塊空間塞滿,然後就當機了
無題 無名 ID:btViwcbE 17/09/24(日)04:25:45 No.9914469
>>C++則不一樣
>>你要自己手動使用delete把他幹掉,不會有人幫你做這種事
現代C++又不一樣
推崇用RAII自動管理動態記憶體
裸指標被當成是壞文明
無題 無名 ID:wNjEI9/M 17/09/24(日)04:33:31 No.9914479
>>9914446原來自動回收的條件是這個
之前看書只說自動自動
卻不知道什麼時候才自動
現在了解了
C++那邊我沒學到那麼多
之前完全不知道delete的存在 (掩臉
(筆記