C语言坑专辑
用于总结各种C语言, 以及汇编语言常见的坑, 填坑, 作死........
Coder233
个人比较喜欢技术。
熟悉C语言,
熟悉汇编语言(ARM/X86),
了解linux 操作系统,
了解C++ ,java语言,
喜欢对底层操作系统原理的理解。
喜欢与人讨论底层技术。
可以关注我,以后会时时更新技术的学习心得。
展开
-
C 语言指针反汇编代码阅读
rbp: 0x7fffffffdd00rbp-14: 0x7fffffffdcf2C语言代码: int *p=(int *)0x7fffffffdcf0;rax(保存了0x7fffffffdcf2): 0x7fffffffdcec *0x7fffffffdcec=50x7fffffffdcec就是rbp -14的值, 0x140x7fffffffdcf2是rbp...原创 2019-10-31 22:32:37 · 607 阅读 · 0 评论 -
C语言动态内存反汇编调试
#include<stdio.h>#include<stdlib.h>int main(){ char *str=(char*)malloc(50); str[0]='a'; 13 14 str[1]='b'; 15 16 str[2]='c'; 17 18 ...原创 2019-10-31 11:13:48 · 465 阅读 · 0 评论 -
gdb C语言汇编代码调试
gdb支持源码级调试,这是众所周知的事情。当然,你也可以进行汇编级的调试。理论上这个更应该有用。(因为很多程序的编译常常没有源码级别的调试信息)那么怎么做?先写一个最简单的源代码。$ cat > a.cint main(void){ int i = 0; i = 2; return 0;}Ctrl + D 保存,编译。$ gcc a.c开始...转载 2019-10-31 07:39:52 · 1175 阅读 · 0 评论 -
内存释放的一些大坑
1 #include<stdio.h> 2 3 #include<string.h> 4 5 6 int main() 7 { 8 9 char *str=(char*)malloc(50); 10 strcpy(str, "hello"); 11 12 13 //st...原创 2019-10-30 21:48:46 · 196 阅读 · 0 评论 -
C指针未初始化, 没有分配内存引发的段错误
#include<stdio.h>char *(strcpy1)( char *Des, const char *Src){ char *p=Des; while(*Src!='\0') { *p=*Src;//!!!!! 由于Des 未被初始化, 对Des 引用引发段错误 Src++; p++; } *p='\0';return Des;}...原创 2019-10-28 18:51:12 · 444 阅读 · 0 评论 -
C语言数组名和指针的关系
案例:int matrix[3][10];matrix[1][5]matrix: 指向包含10个整型元素的数组的指针, 指代第一行, 第一行是子数组matrix+1: 指向包含10个整型元素的数组的指针+1表示第二行, 第二行是子数组*(matrix+1): 对matrix+1进行间接访问操作, 选择第二行的子数组*(matrix+1)+5: 这个指针比*(matrix...原创 2019-10-28 09:11:12 · 286 阅读 · 0 评论 -
C和指针课后答案 6.18 编程练习
第一题代码答案:#include<stdio.h>char *(find_char)(char const *source, char const *chars){ if(source==NULL || chars ==NULL) return NULL; const char *Src=source; const char *Des= chars; con...原创 2019-10-27 22:50:12 · 320 阅读 · 2 评论 -
C语言程序编译流程
编译预处理->编译->汇编->链接编译预处理: gcc -E hello.c -o hello.i (将头文件里的库函数插入进去)编译: gcc -Shello.i -o hello.s ( 将C语言代码翻译程汇编语言)汇编: gcc -c hello.s -o hello.o ...原创 2019-10-27 14:28:26 · 263 阅读 · 0 评论