摘要:
char*fun(){ char*p = “ab”; return p;}char*fun1(){ char *arry[10] = "ab" char*q = arry; return q;}int main(){ char*p =fun(); puts(p);//正确,打印文字常量区的一个字符串。 char *q = fun1(); puts(q);//错误,因为字符串被放在了栈区,当fun1执行完之后,字符串数组占用的空间已经被释放掉,这些空间可能被其他程序的局部变量占用。导致打印乱码。} 阅读全文
摘要:
在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的。进程表示 在 Linux 内核内,进程是由相当大的一个称为 task_struct 的结构表示的。此结构包含所有表示此进程所必需的数据,此外,还包含了大量的其他数据用来统计(accounting)和维护与其他进程的关系(父和子)。struct task_struct { volatile long state; void *stack; un... 阅读全文