C语言之内存的操作
c语言格式符合
const 修饰符
volatile 修饰
防止内存优化,每次从地址读值
typedef 别名
指针运算操作
指针运算:p+n取得的是地址,p[n]取出的是内容,值
内存越界
c语言存在内存越界,c++并不存在
值比较
多级指针的例子
数组的初始化
字符串末尾默认加‘\0’
编译器只有第一次赋值可以一次性解决,以后对于数组操作,只能逐一操作,即一位一位进行修改。
字符拷贝的问题
字符拷贝函数的原贝则:
内存空间和内存空间的逐一赋值的功能的一个封装体一旦空间中出现了0这个特殊值,函数就即将结束。
strcpy()函数存在问题,如果destination值后面没有’\0’,则会一直拷贝。工程中尽量不用。
strncpy可以设置拷贝字符长度,避免内存泄漏。
字符空间
内存拷贝
二维数组
结构体中字节对齐
即空间换效率,采取最大字节单位进行对其,所以空间大小都为4的倍数
代码编码后的地址位置
一般系统(ARM,x86等)的代码地址位于低地址
x86:一般为于0x8084..
内存空间结构
只读空间:静态空间,整个程序结束时释放内存,生存周期最长
栈空军:运行时,函数内部使用的变量,函数一旦返回,就释放,生存周期是函数内
堆空间:运行时,可以自我管理分配和释放的空间,程序员决定的。
堆空间分配: malloc(),一旦成功,返回分配好的地址给我们,只需要接受,对于这个新地址的读法,由程序员灵活把握输入参数指定分配的大小,单位就是B。
释放空间: free(p)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吾辈之人,自当自强不息!!
评论