C语言 - 初级内存
来源:互联网 发布:网络课程艺术鉴赏答案 编辑:程序博客网 时间:2024/05/16 07:45
代码区:存放的都是编译后形成的二进制文件.
常量区:关键词const.放在常量区的常量是只读不可写的.
静态区:关键词static.只被初始化一次,默认值为0,程序运行完就会被释放.
堆区:关键词malloc.是由程序员手动分配和释放的,它的空间比较大.
(内存释放:关键词free,内存都是标记释放的,只是指针不指向这里了,但是内容还在.)
栈区:存储的是局部变量和函数参数.(即卸载花括号里的变量)
栈区的特点:先进后出,即从高到低分配,从低到高使用.
注意!!!!!!!!!通过指针操作,返回栈内存是不安全的.栈区的内存是系统自动分配和释放的,栈区的空间容量是很小的.
内存分配函数:
void *calloc(n,size);
例如:
int *p = calloc(10, 2);
for (int i=0; i<20; i++) {
*(p+i) = 2;
printf("%d ",*(p+i));
}
void *realloc(*p,new size);
例如:
int *p = calloc(10, 2);
for (int i=0; i<20; i++) {
*(p+i) = 2;
printf("%d ",*(p+i));
}
printf("\n");
int *p2 = realloc(p, 5);
for (int i=0; i<5; i++) {
*(p+i) = 2;
printf("%d ",*(p2+i));
}
内存操作函数:
内存赋值:void *memset(void *s , int c , size_t n);
例如:
char *p1 = malloc(8);
char *p2 = memset(p1, 97, 8);
for (int i=0; i<8; i++) {
printf("%c ",*(p2+i));
}
内存拷贝:void *memcpy(void *dest,const void*source,size_t n);
例如:
char *p1 = malloc(8);
char *p2 = memset(p1, 97, 8);
for (int i=0; i<8; i++) {
printf("%c ",*(p2+i));
}
char *p3 = malloc(5);
p3 = memcpy(p3, p2, 5);
for (int i=0; i<5; i++) {
printf("%c ",*(p3+i));
}
内存比较:int memcmp(const void *buf1, const void *buf2, unsigned int count)
例如:
char *p4 = malloc(8);
char *p5 = malloc(8);
memset(p4, 65, 8 );
memset(p5, 97, 8 );
int count = memcmp(p4, p5, 8);
printf("%d",count);
第一个参数是被减指针,第二个参数是减数指针,第三个参数是比较几个字节.跟strcmp类似,也是比较的ASCLL码表的值.
0 0
- C语言 - 初级内存
- C语言内存管理(初级)----动态数组
- C语言内存管理(初级)----链表
- C语言初级问题
- C语言初级学习
- c语言初级知识点
- c语言指针初级
- C语言初级练习
- C语言初级编程
- c语言初级
- 初级c语言编程问题
- C语言基础:初级指针
- c语言初级小程序
- C语言经典初级例题
- C语言指针--初级部分
- Objective - C 9. 内存管理初级
- C语言声明学习之初级篇
- C语言声明学习之初级篇
- POJ - 3628 Bookshelf 2
- JAVA程序员成长之路
- 深入理解JavaScript系列(5):强大的原型和原型链
- 转:oracle-ora 各种sql异常描述
- 高吞吐量系统设计优化建议
- C语言 - 初级内存
- 关于 hashCode() 你需要了解的 3 件事
- hdu 5411 CRB and Puzzle(矩阵快速幂)
- 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
- <秦时明月>---月光
- appium-webview应用的测试
- ACM大一练习赛-第三场------C - 薛定谔的猫《打表枚举的方法》
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- Java线程面试题 Top 50