<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]c语言，malloc分配内存给数组指针并填充内存，給内存赋值实现OOM测试。引入了动态链接库在RSS,VSZ上的一个系统不一致研究并用pmap -x pid查看。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 29 Dec 2007 02:06:30 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	二维数组可以看作是由两个一维数组(一个指针数组，一个基本型别的数组）嵌套而成；&nbsp;&nbsp; <br/>二维数组可以看作是由两个一维数组(一个指针数组，一个基本型别的数组）嵌套而成；&nbsp;&nbsp; <br/>比如a[10][10];&nbsp;&nbsp; <br/>其中a是一个数组，他的每个元素(a[i])(0&lt;=i&lt;10)又是一个数组，如a[i]就是一个数组,它的每个元素为a[i][j](0&lt;=j&lt;10);&nbsp;&nbsp; <br/>其实2维数组中*a就是表示a[0];&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;实际上在内存中只存在一维数组，它只是在语言这一层次上用二维的方式呈现给语言的使用者。&nbsp;&nbsp; <br/>&nbsp;&nbsp;其实二维数组和一维数组差不多，&nbsp;&nbsp; <br/>&nbsp;&nbsp;一维数组中a[i]与*等同，都指的是值；&nbsp;&nbsp; <br/>&nbsp;&nbsp;二维数组中a[i][j]可分为两部分，a[i]代表指向第i行的指针，也就是第i行的首地址；&nbsp;&nbsp; <br/>&nbsp;&nbsp;a[i][j]代表第i行的第j个元素<br/>#include &lt;stdio.h&gt;<br/>int main()<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float a[9]={0,1,2,3,4,5,6,7,8};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float *p=(float*)malloc(9*sizeof(float));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;9;i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%f&quot;,p+i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;9;i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;p==%f&#92;n&quot;,*(p+i));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/><br/><br/>}<br/><br/><br/><br/>动态分配内存并填充里面的内容：<br/>[codes=php]<br/>#include &lt;stdlib.h&gt;<br/>#include &lt;stdio.h&gt;<br/>int main()<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i,j;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int *p[300];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;len of int=%d&#92;n&quot;,sizeof(int));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;300;i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]=(int *)malloc(262013*sizeof(int));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt;262013;j++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(p[i]+j)=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //sleep(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf(&quot;p=%d&#92;n&quot;,*(p[i]+j));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//sleep(0.1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;End...&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}<br/>[/codes]<br/><br/>make malloc<br/>cc&nbsp;&nbsp;&nbsp;&nbsp; malloc.c&nbsp;&nbsp; -o malloc<br/><br/>./malloc<br/><br/>watch -n 2 ps -opid,ppid,rss,vsz,cmd -C malloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mon Sep&nbsp;&nbsp;2 17:17:11 2019<br/><br/>&nbsp;&nbsp;PID&nbsp;&nbsp;PPID&nbsp;&nbsp; RSS&nbsp;&nbsp;&nbsp;&nbsp;VSZ CMD<br/>&nbsp;&nbsp;880 30676 45888&nbsp;&nbsp;49320 ./malloc<br/>经查实核对，上面的RSS是kb，想要看到M，则要45888/1024=44M ,<br/>244667 ==&gt;280M<br/>61166 ==&gt; 70M<br/>42816 ==&gt; 49.57M&nbsp;&nbsp;&nbsp;&nbsp; （共享内存SO动态链接库占用）为何是50M，是300个数组指针，42816*4*300/1024=50.175<br/>256896 ==&gt;294M<br/>262013 ==&gt;300.42M&nbsp;&nbsp; (主进程)<br/><br/><br/>引入了动态链接库在RSS,VSZ上的一个系统不一致研究并查看前的动态链接库的编译基础原理链接，<br/>[实践OK]Linux如何解决动态库的版本控制, Linux如何解决动态库的版本控制，C语言HelloWorld示例，readelf -d libhello.so.0.0.0 &#124;grep SONAME。<br/>[url=https://jackxiang.com/post/7717/]https://jackxiang.com/post/7717/[/url]<br/><br/><br/><br/><br/><br/>整型点几个字节的问题决定上面能使用多少M的内存：<br/>[codes=php]<br/>#include&lt;stdio.h&gt;<br/>&nbsp;&nbsp; main()<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp; char a;<br/>&nbsp;&nbsp;&nbsp;&nbsp; char* b;<br/>&nbsp;&nbsp;&nbsp;&nbsp; short int c;<br/>&nbsp;&nbsp;&nbsp;&nbsp; int d;<br/>&nbsp;&nbsp;&nbsp;&nbsp; unsigned int e;<br/>&nbsp;&nbsp;&nbsp;&nbsp; float f;<br/>&nbsp;&nbsp;&nbsp;&nbsp;double g;<br/>&nbsp;&nbsp;&nbsp;&nbsp;long h;<br/>&nbsp;&nbsp;&nbsp;&nbsp;long long i;<br/>&nbsp;&nbsp;&nbsp;&nbsp;unsigned long j;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;char a=%d&#92;n&quot;,(int)sizeof(a));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;char*b=%d&#92;n&quot;,(int)sizeof(b));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;short int c=%d&#92;n&quot;,(int)sizeof(c));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;int d=%d&#92;n&quot;,(int)sizeof(d));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;unsigned int e=%d&#92;n&quot;,(int)sizeof(e));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;float f=%d&#92;n&quot;,(int)sizeof(f));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;double g=%d&#92;n&quot;,(int)sizeof(g));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;long h=%d&#92;n&quot;,(int)sizeof(h));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;long long i=%d&#92;n&quot;,(int)sizeof(i));<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;unsiged long j=%d&#92;n&quot;,(int)sizeof(j));<br/>&nbsp;&nbsp;}<br/><br/>[/codes]<br/><br/>make int<br/>./int <br/>char a=1<br/>char*b=8<br/>short int c=2<br/>int d=4<br/>unsigned int e=4<br/>float f=4<br/>double g=8<br/>long h=8<br/>long long i=8<br/>unsiged long j=8<br/><br/><br/>来自：https://www.cnblogs.com/TGSB/p/4824246.html<br/><br/><br/>[url=https://www.wntool.com/filesize/]https://www.wntool.com/filesize/[/url]里得出：<br/>整型变量中，上面得出的1个整型有4个字节(byte)，也就是4个byte的类型据上面查出有( 8 )位bit。<br/>1M=1048576个Byte，1048576/4=262144是小B，得乘以8=8388608 .<br/><br/><br/>dmesg &#124; grep oom<br/>[&nbsp;&nbsp; 91.458107] stress-ng (10288): /proc/10288/oom_adj is deprecated, please use /proc/10288/oom_score_adj instead.<br/><br/>dmesg &#124; less -I<br/><br/><br/><br/>用pmap -x pid查看:<br/>pidof main<br/>1589<br/><br/>pmap -x 1589<br/><br/>pmap -x 1589<br/>1589:&nbsp;&nbsp; ./main<br/>Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kbytes&nbsp;&nbsp;&nbsp;&nbsp; RSS&nbsp;&nbsp; Dirty Mode&nbsp;&nbsp;Mapping<br/>0000000000400000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x-- main<br/>0000000000600000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 r---- main<br/>0000000000601000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 rw--- main<br/>00007f79c04da000&nbsp;&nbsp;355752&nbsp;&nbsp;355752&nbsp;&nbsp;355752 rw---&nbsp;&nbsp; [ anon ]<br/>00007f79d6044000&nbsp;&nbsp;&nbsp;&nbsp;1804&nbsp;&nbsp;&nbsp;&nbsp; 276&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x-- libc-2.17.so<br/>00007f79d6207000&nbsp;&nbsp;&nbsp;&nbsp;2044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 ----- libc-2.17.so<br/>00007f79d6406000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16 r---- libc-2.17.so<br/>00007f79d640a000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 rw--- libc-2.17.so<br/>00007f79d640c000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12 rw---&nbsp;&nbsp; [ anon ]<br/>00007f79d6411000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x-- libhello.so.0.0.0<br/>00007f79d6412000&nbsp;&nbsp;&nbsp;&nbsp;2044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 ----- libhello.so.0.0.0<br/>00007f79d6611000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 r---- libhello.so.0.0.0<br/>00007f79d6612000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 rw--- libhello.so.0.0.0<br/>00007f79d6613000&nbsp;&nbsp;&nbsp;&nbsp; 136&nbsp;&nbsp;&nbsp;&nbsp; 108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x-- ld-2.17.so<br/>00007f79d6658000&nbsp;&nbsp;&nbsp;&nbsp;1860&nbsp;&nbsp;&nbsp;&nbsp;1860&nbsp;&nbsp;&nbsp;&nbsp;1860 rw---&nbsp;&nbsp; [ anon ]<br/>00007f79d6832000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 rw---&nbsp;&nbsp; [ anon ]<br/>00007f79d6834000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 r---- ld-2.17.so<br/>00007f79d6835000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 rw--- ld-2.17.so<br/>00007f79d6836000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 rw---&nbsp;&nbsp; [ anon ]<br/>00007fff427ad000&nbsp;&nbsp;&nbsp;&nbsp;1156&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12 rw---&nbsp;&nbsp; [ stack ]<br/>00007fff429e3000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x--&nbsp;&nbsp; [ anon ]<br/>ffffffffff600000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 r-x--&nbsp;&nbsp; [ anon ]<br/>---------------- ------- ------- ------- <br/>total kB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;364896&nbsp;&nbsp;358092&nbsp;&nbsp;357696<br/><br/><br/><br/><br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]c语言，malloc分配内存给数组指针并填充内存，給内存赋值实现OOM测试。引入了动态链接库在RSS,VSZ上的一个系统不一致研究并用pmap -x pid查看。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>