欢迎来到山村网

C语言编程技巧:C语言“徒手”写内存

2019-03-02 11:31:14浏览:88 来源:山村网   
核心摘要:  在application程序猿的眼中,C语言写内存的方法,千篇一律,如下:  struct mystr * ptr;  ptr = malloc(sizeof(*ptr));

  在application程序猿的眼中,C语言写内存的方法,千篇一律,如下:

  struct mystr * ptr;

  ptr = malloc(sizeof(*ptr));

  ptr->fildA='abc';

  ptr->fildB=89;

  但是,如果是系统程序,没有malloc,甚至需要你自己设计malloc,如何来写内存呢?

  下边为大家展示一种技术,此技术比较血腥和暴力,少儿不宜。

  满了18岁的小朋友可以继续观看。

  1 #include

  2 #include

  3

  4 struct str1 {

  5 int i;

  6 char j;

  7 };

  8

  9 int main(){

  10 struct str1 * ptr1;

  11 ptr1 = malloc(sizeof(*ptr1));

  12 *((int*)ptr1)=23;

  13 *((char*)((int*)ptr1 + 1))='a';

  14

  15 printf("now ptr1->i is:%dn",ptr1->i);

  16 printf("now ptr1->j is:%dn",ptr1->j);

  17

  18 return 0;

  19 }

  胆子大一点的童鞋猜一猜呢,ptr1->i是多少呢?

  没错,输出是这样的:

  [root@localhost ~]# ./memwrite

  now ptr1->i is:23

  那么,ptr1->j是多少呢?

  如果知道答案,那么,他为什么会是这个结果呢?

  如果你还没有看懂,加我的QQ号吧。

  如果你理解了本hack的核心原理,再去阅读Linux内核的分页管理、swap技术什么的,就易如反掌了。

(责任编辑:豆豆)
下一篇:

C++编程:C++归并排序实现(算法导论)

上一篇:

C语言经典冒泡排序法

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com