- 博客(14)
- 收藏
- 关注
原创 内核起步:进程管理
进程:什么是进程:一个处于执行期的程序,它不仅局限于一段可执行程序代码,它还应包括其他资源。在linux系统中线程和进程并不特别区分,线程只不过是特殊的的进程。从linux内核角度而言,它并没有线程的概念,它把所有的线程都当作进程来实现都是使用task_struct,我们说的进程和线程是从我们自己的角度来看待这个问题的。这与windows和 Solaris是不一样的。他们是通过一个包含指向四个
2014-08-06 22:16:45
447
原创 最大子数组的问题
题目不说了 ,下面直接写相关代码:暴力解法n2版本,不必多说,代码直接走起O(N2)这里为了简便就只返回subarray maxsum的值 如果还要有数组下标 自行改动即可:int maxsubary(int *s,int n){int maxsum = 0 ;int sum = 0 ;int i ;int j;for(i=0; isum = 0;for(
2014-04-17 21:31:49
482
原创 自我扩展—如何判断一个指定的节点是否是在带环链表的环内还是环外!
按照常规来思考—— 一步一步走能不能遇到自己,遇到自己在环内;遇不到在环外。可是如果在环外的按照前面的思想,难免就进入了死循环 。所以我们不妨换一个思路 :我们就从这个节点开始指定2个指针 :一个走2步 一个 走 一步;2步的每走一次都判断一次 它自己以及它的下一个节点是否和指定节点相同 如果和第一步指针相遇之前就和指定节点相同了必然是在环内 ; 如果是在环外通过和一步指针相遇来结束循
2014-03-16 21:49:05
475
转载 free函数——内存释放
既然有分配,那就必须有释放。不然的话,有限的内存总会用光,而没有释放的内存却在空闲。与 malloc 对应的就是 free 函数了。free 函数只有一个参数,就是所要释放的内存块的首地址。比如上例:free(p);free 函数看上去挺狠的,但它到底作了什么呢?其实它就做了一件事:斩断指针变量与这块内存的关系。比如上面的例子,我们可以说 malloc 函数分配的内存块是属于 p 的,
2014-03-15 21:43:07
1250
原创 网络字节序和主机字节序
大家都知道的!!!大端小端字节序转换我们一般使用固有的htonl或htons等宏和移位进行解决:今天无意百度了下其他方法,发现了一个特别有意思的解决方法:int bigtolittle(int a){ union{ int i; char c[4]; }u,r;
2014-03-05 15:42:21
421
原创 查找一个字符串中最大长度的重复子串,例如abcdab 中ab为最大重复字串 长度为2
大体思路就是使用3个指针q temp str, temp用来保存当前查找的开始位置;q始终指向temp的下一个位置,为了在将目前最大重复子串保存到data数组时候不丢失本次开始查找的位置所以使用str指针用来保存目前查找到的max子串的起始位置在调试过程中发现一个bug;段错误 ;原因是在初始化data时候想都没想就把data数组写成 char *data = p ;这样子就把data指向到了
2014-03-04 17:31:03
640
转载 assert函数使用
assert()函数用法总结assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程
2014-02-03 09:50:56
392
转载 位段使用说明
1)位段成员的类型必须指定为unsigned或int类型。(2) 若某一位段要从另一个字开始存放,可用以下形式定义:unsigned a:1;unsigned b:2;一个存储单元unsigned:0;unsigned c:3;另一存储单元a、b、c应连续存放在一个存储单元中,由于用了长度为0的位段,其作用是使下一个位段从下一个存储单元开始存放。因此,只将a、b存储在一个存
2014-02-02 23:35:51
550
转载 void * 在gcc中被看做char *处理,即void *p; p++;实际加1,而不是加整形的4或者long型的8)
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: int *pint; void *pvoid; pvoid = pint; /* 不过不能 pint = pvoid; */ 如果要将
2014-02-02 18:54:11
1028
转载 关于Segmentation fault (core dumped)几个简单问题的整理
有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置: #设置c
2014-02-01 12:05:07
622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人