[C++] 加速make的編譯

make一個超大項目的時候,你有沒有過痛不欲生的感覺,make有時候可以長達半個小時。現在是多核的世界,你可以試試make -j 10,有時候可以把編譯速度提高五倍。也就是說原本要半個小時的編譯,也許五六分鐘就編譯好了。注意:用make -j 10可能會遇到少數項目出問題。比如在編譯openssl的時候,make -j 10就會編譯出問題。不過大多數時候這個參數還是很有用的。請仔細測試。測試ok的話就試試吧!

[C++] 記憶體保護

C++有記憶體保護嗎,真的有:http://en.wikipedia.org/wiki/Buffer_overflow_protection這個只能保護stack上的buffer,不過已經很有作用了。寫越界寫壞callstack的機率低了很多。提醒:如果callstack沒有效資訊,更有可能是環境版本不匹配。真正寫壞callstack這種事情很罕見的。另外,用ldd命令可以看兩台機器的環境是否一致,注意shared library的地址:ldd httpd         libz.so.1 =

[C++] 在imagemagick裡面計算文本的寬度

image.font(font);image.fontPointsize(fontSize);TypeMetric metric;image.fontTypeMetrics(txt,

一個簡單的隨機數產生演算法實現(C++)

#ifndef EASYRANDOM_INCLUDED#define    EASYRANDOM_INCLUDEDstatic const int A = 48271;static const int M = 2147483647;static const int Q = M/A ;static const int R = M%A ;class Random...{public :    explicit Random(int initialVal=1);    int RandomInt();

C與C++的一些不同之處

以前也沒多注意C和C++有什麼差別,感覺C++沒有類,模板和引用,那麼C++就是C近幾天特別注意了這方面的問題,發現以前想的還是有問題的。去掉了類,模板和引用的C++和C還是有一定的差別的。下面列了幾點還多多指教函數原型在C++中函數原型是必須的,而C中是可選的在C中圓括弧意味著前向原型聲明,但在C++中就意味著函數沒有原型例如int test();int main(){    int test(4,5);}int test(int a,int

[C++] tcmalloc的尷尬

專用的‘對象池’可以比通用的‘記憶體池’效能高兩個數量級。通過宏定義(DECL_MEM_POOL,

[C++] getaddrinfo的一個bug

程式裡面getaddrinfo()有可能會持續的返回 "Temporary failure in name

C++中的namespace

namespace中文意思是命名空間或者叫名字空間,傳統的C++只有一個全域的namespace,但是由於現在的程式的規模越來越大,程式的分工越來越細,全域範圍變得越來越擁擠,每個人都可能使用相同的名字來實現不同的庫,於是程式員在合并程式的時候就會可能出現名字的衝突。namespace引入了複雜性,解決了這個問題。namespace允許像類,對象,函數聚集在一個名字下。本質上講namespace是對全域範圍的細分。我想大家都見過這樣的程式吧:hello_world.c#include

[C++] gdb進階調試方法

1,啟動gdb的時候自動執行指令碼gdb -x your_script注意:your_script裡面只能有gdb命令。不過我們都知道gdb命令裡面有個shell指令,所以實際上這裡可以做任何事。2,調試運行中的進程在gdb裡面有個attach指令,可以調試運行中的進程。結合上面的-x參數,實際上我們可以寫一個指令碼,自動的attach到我們關心的進程上面,然後自動的做很多事情:比如設定trace命令並且continue。3,設定條件斷點break test_func() if x ==

[C++] 如何靜態連結imagemagick

首先,使用最新版的imagemagick,因為較早的版本不能很好的支援static編譯方式(據說小於6.5的都可能有問題)。第二,到imagemagick-src目錄,執行命令 ./configure --disable-shared --prefix=$(YOUR_IM_PATH)第三,如果你有動態庫需要使用這個靜態編譯的imagemagick,那麼還要export CFLAGS="-O3 -Wall -fPIC"第四,執行make命令,執行make

[C++] 關於gdb斷點的真相

gdb的斷點是基於訊號(signal)實現的在某個地址增加一個斷點,實際上就是修改那個地址的代碼,把原來的代碼替換成INT

[C++] 使用imagemagick的一些問題

只要#include <Magick++.h>就可以使用所有功能了。但是你可能會遇到./my_magick.cpp:10: error: 'ThreadResource' was not declared in this scope./my_magick.cpp:10: error: 'SetMagickResourceLimit' was not declared in this scope這是由於Magic++把所有的C風格API都包含到namespace

[C++] 如何不用虛函數實現多態

#include "stdafx.h"typedef void (*fVoid)();class A{public: static void test() { printf("hello A\n"); } fVoid print; A() { print = A::test; }};class B : public A{public:

[C++] 函數的概念

‘真正的’函數只有一種,對應成彙編裡面的jmp,也就是跳轉到某個地址去執行。所謂全域函數、局部函數、成員函數、靜態成員函數、虛函數,都是各種美味的文法糖。全域函數基本上是原始意義上的函數。局部函數(static的全域函數)只是在gcc限制了只允許本cpp的代碼jmp過去。實際上在彙編或者二進位層級是沒這種概念的。純正文法糖。成員函數,只是gcc給函數加上了以class為依據的首碼,然後加上了this指標的參數,實際上gcc編譯之後,還是變成了一個全域函數,只是函數的名字比較特別而已。純正文法糖。

[C++] 應該如何應對OOM?

作為一個C/C++程式員,應該怎麼應對OOM,尤其是作為一個linux

C和lua的互相調用

上代碼,碼農都喜歡上代碼:下面是main.c:#include <stdlib.h>#include <stdio.h>#include <string.h>#include "lua.h"#include "lualib.h"#include "lauxlib.h"void init_lua(lua_State*

[C++] 我們需要掌握多少文法細節

最近和人討論了一些編程中的方法,越發覺得學文法應該不求甚解。文法掌握的越精深,就越有能力閱讀和寫出晦澀的代碼。但是有能力寫出晦澀代碼,其實是一種缺陷。因為這會無形之中讓你不小心寫出晦澀的代碼,因為你瞭解那種晦澀的寫法,所以你認為寫出來也無所謂。但晦澀代碼其實是劣質的代碼。一種典型的壞代碼是:if (a && b && func_do_something());上面的代碼看起來簡潔而正確,實際上更好的代碼卻是下面這種繁瑣的寫法:if (a && b)

C++ 深複製 淺複製解析

轉載自:http://blog.csdn.net/bailu66/article/details/7493859簡單點就是:對於指標,深copy時候,相同資料指標指向不同的記憶體位址深度拷貝是什嗎? 其實就是針對指標或引用的特殊處理而已。任何物件導向的程式都要解決的問題。 一個對象A裡面有一個指標指向一堆資料,你現在想把這個對象拷貝一份B,那麼這個指標怎麼辦?如果預設的話,指標的內容被拷貝,那麼拷貝後的對象B和之前的對象A中的指標指向的是同一個資料。這樣就是“淺拷貝”。如果B中修改了這些資料,A

c 結構體的嵌套引用解讀

c  結構體的嵌套引用解讀背景:在Linux核心系統中經常能看到如下例1形式的結構體嵌套引用,在代碼追蹤、走讀的時候令人費解。所以在弄清楚結構體的嵌套調用就很有用處了。概念:                  1、結構的自引用        在一個結構內部包含一個類型為該結構體自身的成員是不合法的。如下: struct SELF_REF1 {int  a;struct  SELF_REF1 b;int

C 函數中調用 C++函數

// cpp.h#ifndef  __cpp_h__#define  __cpp_h__class  class1 {    class1();    ~class1();public:    int  I;    int  J;    int  getI(void);};#endif// end file// cpp.cpp#i nclude "stdafx.h"#i nclude  <iostream>#i nclude  "cpp.h"#i nclude 

總頁數: 4314 1 .... 1436 1437 1438 1439 1440 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.