Time of Update: 2018-12-03
今天簡述一下簡單的記憶體管理,在IOS5.0以後Apple增加了ARC機制(Automatic Reference Counting),給開發人員帶來了不少的方便,但是為了能更好的理解IOS記憶體管理機制,還是需要對其比較瞭解。1.在OC中,每個對象都有一個保留計數,建立時每個對象都有一個初始值為1的保留計數,釋放時,保留計數都為02.建立自動釋放的對象要求以一個方法建立對象時,以自動釋放的形式返回該對象是一個很好的編程實踐+(Car *)car{ Car *myCar = [[Car
Time of Update: 2018-12-03
1. 定義泛型類 using System;using System.Collections;using System.Collections.Generic;using System.Text;namespace WindowsApplication1{ class BList<T> { ArrayList arr = new ArrayList(); public T this[int i] { get
Time of Update: 2018-12-03
// 常量#define C1 52845#define C2 22719 CString Encrypt(CString S, WORD Key) // 加密函數{CString Result,str;int i,j;Result=S; // 初始化結果字串for(i=0; i<S.GetLength(); i++) // 依次對字串中各字元進行操作{ Result.SetAt(i, S.GetAt(i)^(Key>>8)); // 將密鑰移位後與字元異或 Key =
Time of Update: 2018-12-03
一、Enum的定義 public enum UserRolesType ...{ UnKnown=0, BaseSimple=70, BaseBasic=71, BaseExtend=72, BaseBasic2=88, BaseSimple2=89, BaseExtend2=90}方法一:根據ID擷取枚舉對象protected UserRolesType GetEnum(
Time of Update: 2018-12-03
#include "stdafx.h"// 常量#define C1 52845#define C2 22719CString Encrypt(CString csDeCode, WORD Key) // 加密函數{CString Result,str;int i,j;Result=csDeCode; // 初始化結果字串for(i=0; i<csDeCode.GetLength(); i++) // 依次對字串中各字元進行操作{ Result.SetAt(i,
Time of Update: 2018-12-03
/*name : abortfunction : 異常終止一個進程declare : void abort(void);include :#include <stdlib.h>explanation:abort函數是一個比較嚴重的函數,當調用它時,會導致程式異常終止,而不會進行一些常規的清除工作,比如釋放記憶體等。*///example:#include <stdio.h>#include <stdlib.h>int
Time of Update: 2018-12-03
基於 Alchemy 實現 AS3 與 C++ 互動(1)C++ 回傳 Array 給 AS3作者:柳大·Poechant郵箱:zhongchao.ustc@gmail.com部落格:blog.csnd.net/poechang日期:March 26th, 20120 Alchemy 的使用請參考 Adobe 官網,這裡不贅述。1 C++ 代碼1.1 介面函數// AS3 Array 以參數形式傳入AS3_Val test(void *data, AS3_Val args){ //
Time of Update: 2018-12-03
C++ Programming Error/Warning Analysis (1) cannot have cv-qualifierAuthor:柳大·Poechant(鐘超)Email:zhongchao.ustc#gmail.com (# -> @)Blog:Blog.CSDN.net/PoechantDate:May 9th, 2012Explanation不能有 CV 限定符,在 C++ 中 CV 限定符指const和volatile。非成員函數在 C++
Time of Update: 2018-12-03
C++ Programming Error/Warning Analysis (2) extra qualificationAuthor:柳大·Poechant(鐘超)Email:zhongchao.ustc#gmail.com (# -> @)Blog:Blog.CSDN.net/PoechantDate:May 9th, 2012Explanation執行個體:… class Hello { … void Hello::hello();
Time of Update: 2018-12-03
(1)static成員要在類外初始化:這樣的成員是屬於整個類的,但非常量,所以可以類外初始化,也可以用靜態函數初始化。class A{private: static int a;};int A::a = 0; (2)const static成員可在類內初始化:這樣的成員是屬於整個類的常量。class B{private: const static int b =
Time of Update: 2018-12-03
英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.3.html原文作者:Eric Huss中文譯者:柳驚鴻 Poechant著作權聲明:本文的原文著作權歸Eric Huss所有,中文譯文著作權歸Poechant所有。轉載請註明來自"柳大的CSDN部落格":http://blog.csdn.net/poechant3. errno.h錯誤碼標頭檔用作一般性的錯誤Handler。宏: EDOM ERANGEVariables:
Time of Update: 2018-12-03
加入以下代碼即可檢測記憶體流失:#define _CRTDBG_MAP_ALLOC#include<stdlib.h>#include<crtdbg.h>#ifdef _DEBUG#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)#endifinline void EnableMemLeakCheck(){ _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) |
Time of Update: 2018-12-03
零度の冰翻譯,原文地址在此,轉載請註明出處。本系列的第一部分講述了lambda運算式、auto關鍵字和static_assert。本文將描述右值引用,和隨它而來的兩個新概念:Move語義(move semantics)和完美轉寄(perfect
Time of Update: 2018-12-03
4.1 保持較小的範圍。 保持較小的範圍有助於避免一些難以發現的錯誤。C++支援在for迴圈和if語句中直接聲明變數,如:for (int i=0; i<100;i++){}if (bool b = func() ) {}其中i和b的範圍從被聲明的點開始,直到 } 結束。 4.2 不要在一個範圍和它外圍的範圍裡採用同樣的名字。在一個範圍和它外圍的範圍裡採用同樣的名字會造成名字遮蔽,即外圍的名字被內部範圍的名字遮蔽,人們很容易沒有注意某個名字被遮蔽了,所以會造成一些隱形錯誤。 4.
Time of Update: 2018-12-03
3.1 不要像重新發明車輪那樣企圖做每件事,去使用庫。<<Effective STL>>包含了關於如何使用STL的很多寶貴建議。如Item 13解釋了為什麼vector和string優先於動態數組。Item 43解釋了演算法調用優先於手寫迴圈。還有關於關聯容器,函數對象,迭代器的用法和注意事項。用STL寫程式時可以作為參考。 3.2
Time of Update: 2018-12-03
5.1 避免非平凡的指標算術。複雜的指標算術通常不必要,最好避免。原因是可能導致未定義的結果。兩個指標指向同一個數組的元素時,指標相減才有意義。指標加上或者減去一個整數,得到的結果還是一個指標,如果這個值不指向原來指標指向的數組的元素,那麼使用這個值得結果就是無定義的。指標相加沒有意義,因此不被允許。 5.2
Time of Update: 2018-12-03
auto_ptr有一個特性就是轉移控制權是一個比較有意思的功能;智能指標在在進行拷貝操作或者賦值操作(=)的時候,都會把所包含的指標的控制權轉移到新的變數上去,而變數會指向一個null 指標; #include <memory>#include <string>#include <iostream>#include <utility>void getNOreturnPtr(auto_ptr<string> p){ cout <&
Time of Update: 2018-12-03
需要對外公開的常量放在標頭檔中,不需要對外公開的常量放在定義檔案的頭部。為便於管理,可以把不同模組的常量集中存放在一個公用的標頭檔中 1>類的常量成員,如下:const資料成員只在某個物件存留期內是常量,而對於整個類而言卻是可變的,因為類可以建立多個對象,不同的對象其const資料成員的值可以不同。不能在類聲明中初始化const資料成員。以下用法是錯誤的,因為類的對象未被建立時,編譯器不知道SIZE的值是什麼。class A{ … const int SIZE = 100;
Time of Update: 2018-12-03
C++線程鎖的封裝,主要提供lock,unlock,require等操作,需要注意的是線程重複擷取鎖的問題,設定了一個count的計數器,該計算機之所以不考慮++,--的原子操作的問題,是因為該計數器本身就在lock與unlock中,所以本身是安全執行緒的。另外mutable count是將count的變化操作防止在const方法中,保證方法語義。class TC_ThreadCond;/** * 線程互斥對象 */struct TC_ThreadMutex_Exception :
Time of Update: 2018-12-03
愈發緊迫的挑戰現今,單台機器擁有多個獨立的計算單元已經太常見了,這點在伺服器的處理器上表現尤為明顯,據 AMD 的一張 2012-2013 伺服器路線圖顯示,伺服器處理器的核心數將在 2013 年達到 20 顆之多。合理的利用 CPU 資源已是一個不得不考慮的問題。不少 C++ 程式員依然使用著多執行緒模式,但是對多線程的掌控並不是一件容易的事情,開發中容易出錯、難以調試。有些開發人員為了避免多線程帶來的複雜度而棄用多線程,有些開發人員則另投其他語言陣營,例如