锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜av电影,国产美女精品在线,99re8这里有精品热视频免费 http://m.shnenglu.com/chenglong7997/category/18939.htmlzh-cnTue, 04 Sep 2012 05:11:05 GMTTue, 04 Sep 2012 05:11:05 GMT60internhttp://m.shnenglu.com/chenglong7997/archive/2012/09/02/189077.htmlSnapeSnapeSat, 01 Sep 2012 17:16:00 GMThttp://m.shnenglu.com/chenglong7997/archive/2012/09/02/189077.htmlhttp://m.shnenglu.com/chenglong7997/comments/189077.htmlhttp://m.shnenglu.com/chenglong7997/archive/2012/09/02/189077.html#Feedback0http://m.shnenglu.com/chenglong7997/comments/commentRss/189077.htmlhttp://m.shnenglu.com/chenglong7997/services/trackbacks/189077.htmlfix step錛?br />鍏坮eproduce
鍐嶇‘瀹氬嚭鐜伴棶棰樼殑鍑芥暟錛岃鍙?br />鍒嗘瀽鍘熷洜
fix 


vs涓繙紼嬭皟璇曪紝鎸囧畾ip錛宲ort錛?鍚屾椂鍦ㄨ繙紼嬩富鏈轟笂瑕佸悓鎰忚繙紼嬭皟璇曪紝鎺ュ彈鎸囧畾user銆傝淇濊瘉code涓巈xe鏂囦歡涓鑷淬?br />璁懼畾鏂偣錛岃瀵焏ebug杈撳叆錛屼笌棰勬兂鐨勬湁浠涔堜笉鍚屻傝瀵焍t錛宼hread stack 鎵懼埌鍑虹幇闂鐨勫嚱鏁版垨鑰呰鍙楓?br />
p4 涓殑check out, commit, diff, opened, edit錛?sync鍛戒護鍜屼綔鐢ㄣ?br />submit step錛歮erge changlist (from branch) (to branch)
check diff
resolve
make (so make sure the code is right)
submit (add comments)
set the bug state in Web

vim:鐔熸倝浜嗗悇縐嶅懡浠ゃ?br />
cscope錛宑tag錛氬湪linux涓祻瑙堜唬鐮佸緢鏈夌敤錛屽彲浠ユ壘鍒癴unction definition, struct definition, calling function, called function. 

鍦ㄤ竴涓洰褰曚腑寤虹珛cscope database錛?鍙互鍐嶄富鐩綍寤虹珛錛屼箣鍚庡彧鍦ㄨ繖閲屼嬌鐢╟scope錛屽氨鑳芥壘鍒板叏閮ㄥ紩鐢ㄣ?br />
linux錛?lib 鏂囦歡鐨勪嬌鐢ㄣ?鏈?a 鍜?o鐨刲ib鏂囦歡銆?br />
2.code style.
鏂囦歡鍛藉悕瑕佹湁灞傛鎰熴備緥濡傦紝snape_webserver_msg.c, snape_webserver_thread.c, snape_webserver_log.c, snape_client_msg.c,,,
鍑芥暟鍛藉悕涔熻鏈夊眰嬈℃劅錛?渚嬪錛宻nape_webserver_msg_set_connection(), snape_webserver_thread_create(),snape_client_request_get_pic().
鍙橀噺鍛藉悕涔熻鏈夊眰嬈℃劅鍜屾剰涔夈?br />鍑洪敊澶勭悊鐨勪笓闂ㄥ嚱鏁般?br />debug level錛歞ebug錛宨nfo, basic, webserver, client,,,

3.鍑芥暟鐨勫畾涔変笌嫻忚銆?br />call graph definition.
鍑芥暟鍚嶅瓧鏈濂借兘澶熸樉紺哄嚭鍑芥暟璋冪敤鐨刧raph銆?br />浣跨敤hash table 淇濆瓨澶ч噺綾誨瀷鐨勬暟鎹?br />浣跨敤鍐呭鐨刴d5浣滀負榪欎釜鍐呭鐨刬d錛屽氨鍙互瀹岀編閰嶅悎hash table銆?br />
4.thread錛?process
windows 涓紝 object , event, cs
cs鍚屾閫熷害杈冨揩錛屼絾鏄嬌鐢╟s瀹規槗榪涘叆deadlock鐘舵併傚洜涓哄湪絳夊緟榪涘叆cs鏃訛紝鏃犳硶璁懼畾瓚呮椂鍊箋?br />浜掓枼瀵硅薄涓庡唴鏍稿璞″睘浜庡唴鏍稿璞★紝鍒╃敤鍐呮牳瀵硅薄榪涜綰跨▼鍚屾錛屽悓姝ラ熷害杈冩參錛屼絾榪欑鏂瑰紡鍙湪澶氫釜榪涚▼鐨勫悇涓璞′箣闂磋繘琛屽悓姝ャ?br />event鍒嗕負浜哄伐閲嶇疆涓庤嚜鍔ㄩ噸緗簨浠訛紝涓よ呭湪緇嗚妭涓婏紝涓嶅悓銆?br />
5.cache implementation
client绔彲浠ヤ嬌鐢ㄧ被浼紀s涓紝cache 涓?铏氭嫙鍐呭瓨鐨勬柟娉曘俠_modified琛ㄧず鏄惁緇忚繃鏇存敼錛屼粠鑰屾槸鍚﹂渶瑕佹洿鏂般傛瘡嬈″彧鍘繪嬁鏂扮殑涓滆タ銆?br />鑰屽湪server绔紝鍙互浣跨敤鍐呭鐨凪D5鍒ゆ柇鏄惁闇瑕佸鐞嗘潵鍒扮殑鍐呭錛屽彲浠ョ敤澶氬眰嬈$殑MD5鏉ユ洿鍔犲幓improve performance銆備緥濡傜敤鎬諱綋鐨刴d5錛屽拰鍚勪釜閮ㄥ垎鐨刴d5.
鍏堝垽鏂諱綋MD5錛屽鏋滄敼鍙橈紝鍦ㄥ幓媯鏌ラ儴鍒唌d5.濡傛灉娌℃湁鏀瑰彉錛屽氨鏁翠釜閮藉彲浠ヤ涪寮冿紝涓嶅幓澶勭悊銆?br />design is very important. 浠g爜鐨勬墽琛岃繃紼嬭瀹屽叏渚濊禆design銆?br />
6.select function
寮傛select錛?鍙互璁╃嚎紼嬩笉鍘籦usy waiting銆?br />浣嗘槸濡傛灉闇瑕佷紶杈撳唴瀹癸紝闇瑕乼rigger signal錛岃瀹冧笉鐢ㄧ瓑鍒皌imeout錛屽氨鑳藉彂閫佹暟鎹?br />
7.timestamp/timeout/ ts_diff
鍙互鐢╰s_diff鍘誨悓姝ユ椂闂淬?br />浣跨敤timeout鏉ラ槻姝換鎰忔搷浣滅殑鏃犻檺鍒剁瓑寰?br />浣跨敤timestamp鏉ュ喅瀹氬摢涓涓洿鏂般備笉瑕佺敤counter銆傦紙鏃犳硶鍚屾錛屾棤娉曟帶鍒跺崟涓鎬э級

8.xml api
鍦ㄤ紶閫佹暟鎹柟闈紝鍙互浣跨敤xml

9.performace/memory usage
mm tools.
































Snape 2012-09-02 01:16 鍙戣〃璇勮
]]>
C/C++ 2D鏁扮粍鐨勫姩鎬佸垎閰嶆柟娉曟瘮杈?/title><link>http://m.shnenglu.com/chenglong7997/archive/2012/03/27/169078.html</link><dc:creator>Snape</dc:creator><author>Snape</author><pubDate>Mon, 26 Mar 2012 17:20:00 GMT</pubDate><guid>http://m.shnenglu.com/chenglong7997/archive/2012/03/27/169078.html</guid><wfw:comment>http://m.shnenglu.com/chenglong7997/comments/169078.html</wfw:comment><comments>http://m.shnenglu.com/chenglong7997/archive/2012/03/27/169078.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.shnenglu.com/chenglong7997/comments/commentRss/169078.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/chenglong7997/services/trackbacks/169078.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">鏂規硶1:</span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 817px; word-break: break-all; "><span style="color: #008080; "> 1</span> #include <iostream><br /><span style="color: #008080; "> 2</span> <span style="color: #0000ff; ">using</span> <span style="color: #0000ff; ">namespace</span> std;<br /><span style="color: #008080; "> 3</span> <br /><span style="color: #008080; "> 4</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">by snape 2012-3-25<br /></span><span style="color: #008080; "> 5</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">method 1: drawback is we need calculate the one-dimensional index to <a title="Powered by Text-Enhance" id="_GPLITA_0" href="http://m.shnenglu.com/chenglong7997/articles/168958.html#" in_rurl="http://www.textsrv.com/click?v=VVM6MTQ1NjI6MjQ6YWNjZXNzOjkwYjM2ZjUxM2ZlZDdmZWEzYmJjYjA4NGZmZTU5MzI0OnotMTA0Ny0xNDIxMjp3d3cuY3BwYmxvZy5jb20%3D" style="color: #0066aa; ">access</a> the 2D array</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 6</span> <span style="color: #0000ff; ">int</span> main()<br /><span style="color: #008080; "> 7</span> {<br /><span style="color: #008080; "> 8</span>     <span style="color: #0000ff; ">int</span> rowSize, colSize, totalSize;<br /><span style="color: #008080; "> 9</span>     <span style="color: #0000ff; ">int</span> index, i,j;<br /><span style="color: #008080; ">10</span> <br /><span style="color: #008080; ">11</span>     cout<<"Enter the row and column size for your 2D array!"<<endl;<br /><span style="color: #008080; ">12</span>     cin>>rowSize>>colSize;<br /><span style="color: #008080; ">13</span> <br /><span style="color: #008080; ">14</span>     totalSize=rowSize*colSize;<br /><span style="color: #008080; ">15</span>     <span style="color: #0000ff; ">int</span> *pArray;<br /><span style="color: #008080; ">16</span>     pArray=<span style="color: #0000ff; ">new</span> <span style="color: #0000ff; ">int</span>[totalSize];<br /><span style="color: #008080; ">17</span> <br /><span style="color: #008080; ">18</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">file  the array with integers from 0 to totalsize<br /></span><span style="color: #008080; ">19</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">file across the rows, moving down the colums</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">20</span> <br /><span style="color: #008080; ">21</span>     <span style="color: #0000ff; ">int</span> arrayValue=0;<br /><span style="color: #008080; ">22</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)    <span style="color: #008000; ">//</span><span style="color: #008000; ">outer-loop traverse down the "rows"</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">23</span>     {<br /><span style="color: #008080; ">24</span>         <span style="color: #0000ff; ">for</span>(j=0; j<colSize; ++j)<br /><span style="color: #008080; ">25</span>         {<br /><span style="color: #008080; ">26</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">caculate array index<br /></span><span style="color: #008080; ">27</span> <span style="color: #008000; ">            </span><span style="color: #008000; ">//</span><span style="color: #008000; ">index=rowSize*j+i;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">both index=rowSize*j+i; and index=colSize*i+j; are ok</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">28</span>             index=colSize*i+j;            <span style="color: #008000; ">//</span><span style="color: #008000; ">but if index=rowsize*i+j; or index=colSize*j+i; then there will be a bug.</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span>             pArray[index]=arrayValue;    <span style="color: #008000; ">//</span><span style="color: #008000; "> i like index=colSize*i+j; since the arrange of 2D is according to rows</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">30</span>             cout<<"index="<<index<<endl;<br /><span style="color: #008080; ">31</span>             cout<<"i(row)="<<i<<"j(col)="<<j<<"array value"<<pArray[index]<<endl;<br /><span style="color: #008080; ">32</span>             ++arrayValue;<br /><span style="color: #008080; ">33</span>         }<br /><span style="color: #008080; ">34</span>     }<br /><span style="color: #008080; ">35</span> <br /><span style="color: #008080; ">36</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">output the array</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">37</span>     <span style="color: #0000ff; ">for</span>(<span style="color: #0000ff; ">int</span> k=0; k<totalSize; ++k)<br /><span style="color: #008080; ">38</span>     {<br /><span style="color: #008080; ">39</span>         cout<<pArray[k]<<endl;<br /><span style="color: #008080; ">40</span>     }<br /><span style="color: #008080; ">41</span>     cout<<"The End"<<endl;<br /><span style="color: #008080; ">42</span>     delete [] pArray;<br /><span style="color: #008080; ">43</span>     <span style="color: #0000ff; ">return</span> 0;<br /><span style="color: #008080; ">44</span> }<br /><span style="color: #008080; ">45</span> <br /><span style="color: #008080; ">46</span> </div><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">鏂規硶2錛?/span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 817px; word-break: break-all; "><span style="color: #008080; "> 1</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">by snape<br /></span><span style="color: #008080; "> 2</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">method 2: better than method 1, but call new twice</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 3</span> <span style="color: #0000ff; ">int</span> main()<br /><span style="color: #008080; "> 4</span> {<br /><span style="color: #008080; "> 5</span>     <span style="color: #0000ff; ">int</span> rowSize, colSize, totalSize;<br /><span style="color: #008080; "> 6</span>     <span style="color: #0000ff; ">int</span> i, j;<br /><span style="color: #008080; "> 7</span>     cout<<"Enter the row and column size for your 2D array"<<endl;<br /><span style="color: #008080; "> 8</span>     cin>>rowSize>>colSize;<br /><span style="color: #008080; "> 9</span> <br /><span style="color: #008080; ">10</span>     totalSize=rowSize*colSize;<br /><span style="color: #008080; ">11</span> <br /><span style="color: #008080; ">12</span>     <span style="color: #0000ff; ">int</span> *pArray; <span style="color: #008000; ">//</span><span style="color: #008000; ">pointer to an integer</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">13</span>     <span style="color: #0000ff; ">int</span> **pPointerArray; <span style="color: #008000; ">//</span><span style="color: #008000; ">pointer to an integer pointer</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">14</span> <br /><span style="color: #008080; ">15</span>     pArray=<span style="color: #0000ff; ">new</span> <span style="color: #0000ff; ">int</span>[totalSize];    <span style="color: #008000; ">//</span><span style="color: #008000; ">memory for totalSize integers</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span>     pPointerArray=<span style="color: #0000ff; ">new</span> <span style="color: #0000ff; ">int</span>*[rowSize];    <span style="color: #008000; ">//</span><span style="color: #008000; ">memory for rowSize # of int pointers<br /></span><span style="color: #008080; ">17</span> <span style="color: #008000; "><br /></span><span style="color: #008080; ">18</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">fill the pointer array with the pArray[i][0] address</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">19</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)<br /><span style="color: #008080; ">20</span>         pPointerArray[i]=pArray+i*colSize;    <span style="color: #008000; ">//</span><span style="color: #008000; ">place the address into the pointer<br /></span><span style="color: #008080; ">21</span> <span style="color: #008000; "><br /></span><span style="color: #008080; ">22</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">now fill the pArray by using the pPointerArray to access elements</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">23</span>     <span style="color: #0000ff; ">int</span> arrayValue=0;<br /><span style="color: #008080; ">24</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)<br /><span style="color: #008080; ">25</span>     {<br /><span style="color: #008080; ">26</span>         <span style="color: #0000ff; ">for</span>(j=0; j<colSize; ++j)<br /><span style="color: #008080; ">27</span>         {<br /><span style="color: #008080; ">28</span>             pPointerArray[i][j]=arrayValue;    <span style="color: #008000; ">//</span><span style="color: #008000; ">cool</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span>             cout<<"i(row)="<<i<<"j(col)="<<j<<"array value="<<pPointerArray[i][j]<<endl;<br /><span style="color: #008080; ">30</span>             ++arrayValue;<br /><span style="color: #008080; ">31</span>         }<br /><span style="color: #008080; ">32</span>     }<br /><span style="color: #008080; ">33</span> <br /><span style="color: #008080; ">34</span>         <span style="color: #008000; ">//</span><span style="color: #008000; ">output the array</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">35</span>     <span style="color: #0000ff; ">for</span>(<span style="color: #0000ff; ">int</span> k=0; k<totalSize; ++k)<br /><span style="color: #008080; ">36</span>     {<br /><span style="color: #008080; ">37</span>         cout<<pArray[k]<<endl;<br /><span style="color: #008080; ">38</span>     }<br /><span style="color: #008080; ">39</span>     cout<<"The End!"<<endl;<br /><span style="color: #008080; ">40</span>     delete [] pArray;<br /><span style="color: #008080; ">41</span>     delete [] pPointerArray;<br /><span style="color: #008080; ">42</span>     <span style="color: #0000ff; ">return</span> 0;<br /><span style="color: #008080; ">43</span> }</div><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">鏂規硶3錛?/span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 817px; word-break: break-all; "><span style="color: #008080; "> 1</span> <span style="color: #008000; ">//</span><span style="color: #008000; "> by snape<br /></span><span style="color: #008080; "> 2</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">method 3: better than method 2. just malloc once and the memory is contiguous block. the <a title="Powered by Text-Enhance" id="_GPLITA_1" href="http://m.shnenglu.com/chenglong7997/articles/168958.html#" in_rurl="http://www.textsrv.com/click?v=VVM6MTMyMzc6NDpiZXN0OjdmODY5YmEwYmFjZGJhM2U0ODQ4NWQyNzQ4YzFhM2I3OnotMTA0Ny0xNDIxMjp3d3cuY3BwYmxvZy5jb20%3D" style="color: #0066aa; ">best</a></span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 3</span> <span style="color: #0000ff; ">int</span> **my2DAlloc(<span style="color: #0000ff; ">int</span> rowSize, <span style="color: #0000ff; ">int</span> colSize)<br /><span style="color: #008080; "> 4</span> {<br /><span style="color: #008080; "> 5</span>     <span style="color: #0000ff; ">int</span> i;<br /><span style="color: #008080; "> 6</span>     <span style="color: #0000ff; ">int</span> header=rowSize * <span style="color: #0000ff; ">sizeof</span>(<span style="color: #0000ff; ">int</span> *);<br /><span style="color: #008080; "> 7</span>     <span style="color: #0000ff; ">int</span> data=rowSize * colSize * <span style="color: #0000ff; ">sizeof</span>(<span style="color: #0000ff; ">int</span>);<br /><span style="color: #008080; "> 8</span>     <span style="color: #0000ff; ">int</span> **rowptr=(<span style="color: #0000ff; ">int</span> **)malloc(header+data);    <span style="color: #008000; ">//</span><span style="color: #008000; ">malloc memory for both data and pointerArray(the header)</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 9</span> <br /><span style="color: #008080; ">10</span>     <span style="color: #0000ff; ">if</span>(rowptr==NULL)<br /><span style="color: #008080; ">11</span>         <span style="color: #0000ff; ">return</span> NULL;<br /><span style="color: #008080; ">12</span>     <span style="color: #0000ff; ">int</span> *buf=(<span style="color: #0000ff; ">int</span> *)(rowptr+rowSize);    <span style="color: #008000; ">//</span><span style="color: #008000; ">buf: the pointer to the first data</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">13</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)    <span style="color: #008000; ">//</span><span style="color: #008000; ">assign the address of each row to pointerArray(the header)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">14</span>         rowptr[i]=buf+i*colSize;<br /><span style="color: #008080; ">15</span> <br /><span style="color: #008080; ">16</span>     <span style="color: #0000ff; ">return</span> rowptr;<br /><span style="color: #008080; ">17</span> }<br /><span style="color: #008080; ">18</span> <br /><span style="color: #008080; ">19</span> <span style="color: #0000ff; ">int</span> main()<br /><span style="color: #008080; ">20</span> {<br /><span style="color: #008080; ">21</span>     cout<<"Enter the row and column size for your 2D array"<<endl;<br /><span style="color: #008080; ">22</span>     <span style="color: #0000ff; ">int</span> rowSize, colSize;<br /><span style="color: #008080; ">23</span>     cin>>rowSize>>colSize;<br /><span style="color: #008080; ">24</span>     <span style="color: #0000ff; ">int</span> **p=my2DAlloc(rowSize, colSize);<br /><span style="color: #008080; ">25</span> <br /><span style="color: #008080; ">26</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">assign values</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">27</span>     <span style="color: #0000ff; ">int</span> i, j, arrayValue=0;<br /><span style="color: #008080; ">28</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)<br /><span style="color: #008080; ">29</span>         <span style="color: #0000ff; ">for</span>(j=0; j<colSize; ++j)<br /><span style="color: #008080; ">30</span>             p[i][j]=arrayValue++;<br /><span style="color: #008080; ">31</span>     <br /><span style="color: #008080; ">32</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">output values</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">33</span>     <span style="color: #0000ff; ">for</span>(i=0; i<rowSize; ++i)<br /><span style="color: #008080; ">34</span>         <span style="color: #0000ff; ">for</span>(j=0; j<colSize; ++j)<br /><span style="color: #008080; ">35</span>             cout<<p[i][j]<<endl;<br /><span style="color: #008080; ">36</span> <br /><span style="color: #008080; ">37</span>     <a title="Powered by Text-Enhance" id="_GPLITA_2" href="http://m.shnenglu.com/chenglong7997/articles/168958.html#" in_rurl="http://www.textsrv.com/click?v=VVM6MTMyMzc6NDpmcmVlOmQ3OGMyMTVlZjdmODliMzY1YjExZmUwNjg4YTM3NTA5OnotMTA0Ny0xNDIxMjp3d3cuY3BwYmxvZy5jb20%3D" style="color: #0066aa; ">free</a>((<span style="color: #0000ff; ">void</span> *)p);<br /><span style="color: #008080; ">38</span> }</div><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">鏂規硶3錛屾垜鎰熻鏈濂斤紝鍙皟鐢ㄤ竴嬈alloc錛?絀洪棿榪炵畫錛岄噴鏀懼唴瀛樹篃姣旇緝鏂逛究銆?/span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">澶у鏈変粈涔堟兂娉曠殑嬈㈣繋浜ゆ祦</span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><img src ="http://m.shnenglu.com/chenglong7997/aggbug/169078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/chenglong7997/" target="_blank">Snape</a> 2012-03-27 01:20 <a href="http://m.shnenglu.com/chenglong7997/archive/2012/03/27/169078.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C 杈圭晫瀵歸綈鐨刴alloc鍜宖ree鍑芥暟瀹炵幇http://m.shnenglu.com/chenglong7997/archive/2012/03/27/169077.htmlSnapeSnapeMon, 26 Mar 2012 17:19:00 GMThttp://m.shnenglu.com/chenglong7997/archive/2012/03/27/169077.htmlhttp://m.shnenglu.com/chenglong7997/comments/169077.htmlhttp://m.shnenglu.com/chenglong7997/archive/2012/03/27/169077.html#Feedback0http://m.shnenglu.com/chenglong7997/comments/commentRss/169077.htmlhttp://m.shnenglu.com/chenglong7997/services/trackbacks/169077.htmlMSVC 涓嬮潰鏈夛細
1 
2 void * _aligned_malloc(
3     size_t size, 
4     size_t alignment
5 );
Unix/Linux涓嬮潰鏈夛細
1 int posix_memalign(void **memptr, size_t alignment, size_t size);

鑷繁瀹炵幇錛?br />
 1 #include <iostream>
 2 #include <stdlib.h>
 3 using namespace std;
 4 
 5 //by snape 2012-3-25
 6 
 7 void *aligned_malloc(size_t required_bytes, size_t alignment)
 8 {
 9     void *p1;    //orignal block
10     void **p2;    //aligned block
11 
12     int offset=alignment-1+sizeof(void*);
13     if( (p1=(void*)malloc(required_bytes+offset))==NULL )
14         return NULL;
15     //cast void* to void** to let p1 store into heap in the form of pointer
16     p2=(void**)( ((size_t)(p1)+offset) & ~(alignment-1) );    //add offset to p1 and then back to the aligned address
17     p2[-1]=p1;
18     return p2;
19 }
20 
21 void aigned_free(void *p2)
22 {
23     void* p1=((void**)p2)[-1];    //get the p1
24     free(p1);
25 }
26 
27 
28 
29 int main()
30 {
31     int size=10, align=16;
32     int *p=(int *)aligned_malloc(size, align);
33     
34     cout<<"The start address="<<p<<endl;
35     
36     aigned_free(p);
37 }

涓婇潰瀹炵幇寰堣冮獙瀵規寚閽堢殑鎺屾彙銆傚師鐞嗕笉鏄緢闅俱?br />
Line12錛氬垎閰嶅唴瀛樼殑鏃跺欙紝鍔犱笂alignment-1涓┖闂達紝灝辮兘淇濊瘉鑳藉鎵懼埌鍜宎lignment瀵歸綈鐨勫紑濮嬪湴鍧銆傚鍑烘潵鐨剆izeof錛坴oid*錛夋槸涓轟簡淇濆瓨malloc鏈鍒濊繑鍥炵殑鎸囬拡p1鑰屽垎閰嶇殑涓涓┖闂?br />
Line 17: 淇濆瓨鍘熷鐨刴alloc榪斿洖鐨勫湴鍧p1鍒板榻愬湴鍧鐨勫墠涓涓┖闂?/div>

Snape 2012-03-27 01:19 鍙戣〃璇勮
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国内在线观看一区二区三区| 欧美一区二区三区啪啪| 国产日韩欧美麻豆| 在线电影院国产精品| 亚洲欧美激情视频| 亚洲另类黄色| 狼人社综合社区| 国产日韩高清一区二区三区在线| 一区二区三区日韩精品| 欧美激情一区二区三区在线| 欧美影院视频| 国产精品午夜av在线| 亚洲一区免费网站| 亚洲精品午夜精品| 欧美精品日韩一区| 亚洲人成网站999久久久综合| 免费亚洲视频| 久久一二三区| 亚洲欧洲日产国码二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美在线免费观看| 中文在线不卡视频| 欧美日韩在线一区二区| 一区二区三区精品视频| 日韩视频在线一区二区三区| 9色精品在线| 欧美精品一区二区三区在线看午夜| 欧美成人一区二区| 香蕉久久夜色精品国产使用方法| 国产精品一区二区你懂得 | 亚洲视频久久| 一本色道精品久久一区二区三区 | 欧美一区二区三区在线观看| 国产拍揄自揄精品视频麻豆| 久久福利精品| 久久夜色精品国产噜噜av| 亚洲电影免费| 亚洲日本aⅴ片在线观看香蕉| 欧美一级播放| 在线观看的日韩av| 欧美激情一区二区三区四区| 欧美日韩成人一区| 亚洲欧美日韩精品综合在线观看| 午夜精品国产更新| 亚洲成人在线视频网站| 亚洲人成亚洲人成在线观看| 欧美三级网址| 久久久另类综合| 狂野欧美一区| 亚洲亚洲精品在线观看 | 一本一本久久a久久精品综合麻豆| 欧美性大战久久久久久久蜜臀 | 夜夜狂射影院欧美极品| 国产一级一区二区| 亚洲人成网站影音先锋播放| 国产欧美日韩综合一区在线播放| 免费观看成人www动漫视频| 欧美日韩国产在线播放| 久久成人国产精品| 欧美3dxxxxhd| 久久aⅴ国产欧美74aaa| 欧美电影在线播放| 久久精品视频网| 欧美日韩福利在线观看| 久久精品中文字幕一区| 欧美极品在线播放| 亚洲免费高清| 欧美日本一道本| 99国产一区| 香蕉成人伊视频在线观看| 欧美理论大片| 亚洲男女毛片无遮挡| 性做久久久久久久免费看| 国产精品成人免费精品自在线观看| 91久久精品国产91久久| 亚洲国产高潮在线观看| 国产精品成人av性教育| 久热精品视频在线观看一区| 欧美日韩在线直播| 亚洲风情亚aⅴ在线发布| 国产麻豆午夜三级精品| 亚洲精品之草原avav久久| 极品日韩av| 欧美一级视频精品观看| 亚洲图片欧洲图片日韩av| 两个人的视频www国产精品| 欧美在线一二三四区| 欧美视频福利| 日韩亚洲成人av在线| 亚洲第一偷拍| 久久久国产精品一区二区中文 | 欧美午夜精品久久久久久人妖| 亚洲成人在线网站| 激情综合久久| 久久久国产精品一区二区中文| 欧美在线免费一级片| 国产精品一区亚洲| 亚洲欧美精品中文字幕在线| 亚洲欧美日韩国产成人精品影院| 欧美日韩亚洲91| 亚洲小视频在线| 欧美一区深夜视频| 日韩午夜在线观看视频| 久久亚洲春色中文字幕久久久| 久久久蜜桃一区二区人| 国产精品美女诱惑| 亚洲深夜av| 亚洲午夜日本在线观看| 欧美无砖砖区免费| 夜夜嗨av一区二区三区四季av| 99精品欧美一区二区三区| 老牛影视一区二区三区| 国产一区二区三区在线观看视频| 欧美成人一品| 亚洲福利视频网站| 91久久精品日日躁夜夜躁欧美| 久久精品视频在线| 免费h精品视频在线播放| 亚洲电影免费在线| 欧美激情精品久久久久久| 欧美18av| 亚洲美女性视频| 欧美高清在线精品一区| 欧美国产极速在线| 国产精品一级二级三级| 亚洲大胆美女视频| 中文亚洲免费| 麻豆国产va免费精品高清在线| 亚洲国产高清在线观看视频| 亚洲综合大片69999| 午夜精品久久| 欧美午夜片在线免费观看| 91久久夜色精品国产网站| 一本色道久久综合亚洲二区三区| 日韩一区二区高清| 欧美三级欧美一级| 久久er99精品| 亚洲国产日本| 亚洲欧美日产图| 影音国产精品| 欧美日韩国产亚洲一区| 性视频1819p久久| 亚洲国产成人不卡| 欧美a级片一区| 欧美高清一区二区| 艳女tv在线观看国产一区| 久久久久国产精品厨房| 亚洲精品国产精品国自产在线 | 久久婷婷丁香| 一区二区免费在线视频| 国产一区二区在线观看免费播放| 免费日韩成人| 亚洲欧洲av一区二区| 亚洲激情中文1区| 欧美在线高清视频| 一区二区三区产品免费精品久久75| 国产麻豆午夜三级精品| 欧美日韩国产专区| 久久免费精品视频| 亚洲综合欧美日韩| 日韩视频一区二区| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲网站视频| 欧美成人激情视频免费观看| 亚洲视频在线观看免费| 久久天堂成人| 午夜视频久久久| 一本久道久久综合狠狠爱| 在线播放中文字幕一区| 国产精品日韩精品| 欧美日韩亚洲一区二区三区四区 | 国产精品第13页| 午夜视频一区| 国产在线麻豆精品观看| 欧美国产日韩亚洲一区| 久久精品免视看| 亚洲在线视频| 99成人在线| 日韩网站免费观看| 亚洲品质自拍| 最新热久久免费视频| 亚洲国产精品免费| 欧美成人免费视频| 欧美1区免费| 女人天堂亚洲aⅴ在线观看| 久久久综合激的五月天| 久久久www成人免费精品| 久久久久久国产精品mv| 久久夜色精品国产| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美一区午夜视频在线观看| 亚洲自拍偷拍网址| 亚洲综合精品四区| 欧美一区二区精美| 欧美一级黄色网| 久久欧美肥婆一二区| 欧美成人综合在线| 欧美视频在线观看 亚洲欧| 国产精品成人观看视频免费| 国产精品一区免费在线观看|