1.memmove函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数函数说明:memmove用于从source拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。2.memcpy函数原型:void *memcpy(void *dest,const void *source,size_tcount);返 Read More
内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器 的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete 释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。7.2常见的内存错误及其对策 发生内存错误是件非常麻烦的事情 Read More
/*输入一个英文句子,翻转句子中的单词顺序。但单词内的顺序不变。句子中单词空格隔开。为简单起见,标点符号和普通字母一样处理。例如输入"Iamastudent.",则输出“student.aamI”.*/#include<stdio.h>#include<assert.h>voidreverse(char*begin,char*end){chartmp;while(begin<--end){tmp=*begin;*begin=*end;*end=tmp;++begin;}}char*word_reverse(charsrc[]){char*p=s Read More
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下 几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一 块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、 文字常量区—常量字符串就是放在这 Read More