怎么自己注册网站平台了,wordpress简历,天津网站优化哪家最专业,深圳app定制开发外包公司内存操作函数
memset()
//memset 函数将指定内存区域 ptr 开始的 num 个字节设置为 value。
void *memset(void *ptr, int value, size_t num);参数#xff1a;ptr#xff1a;指向要填充的内存区域的指针。value#xff1a;要填充的值#xff0c;以整数形式传递。num参数ptr指向要填充的内存区域的指针。value要填充的值以整数形式传递。num要填充的字节数。memcpy()
//memcpy 函数会将源内存区域 src 的前 n 个字节的内容复制到目标内存区域 dest 中。
void *memcpy(void *dest, const void *src, size_t n);
参数dest指向目标内存区域的指针也就是要将源数据复制到的地方。src指向源内存区域的指针也就是要复制的数据来源。n要复制的字节数。为了防止内存重叠导致不确定的结果建议源内存区域和目标内存区域不能重叠。 memmove()
//memmove 函数会将源内存区域 src 的内容移动到目标内存区域 dest 中并且可以处理内存重叠的情况。
void *memmove(void *dest, const void *src, size_t n);
参数dest指向目标内存区域的指针也就是要将数据移动到的地方。src指向源内存区域的指针也就是要移动的数据来源。n要移动的字节数。memmove 函数能够处理源内存区域和目标内存区域重叠的情况以确保正确的数据移动。 memcmp()
//memcmp 函数会比较 ptr1 和 ptr2 指向的内存区域的前 num 个字节的内容并根据比较结果返回一个整数值。
int memcmp(const void *ptr1, const void *ptr2, size_t num);
参数ptr1指向第一个内存区域的指针。ptr2指向第二个内存区域的指针。num要比较的字节数。
返回值
如果 ptr1 的内容小于 ptr2 的内容返回一个负整数。
如果 ptr1 的内容等于 ptr2 的内容返回 0。
如果 ptr1 的内容大于 ptr2 的内容返回一个正整数。memcmp 函数是以字节为单位进行比较的因此适用于比较任意类型的数据。但是当比较字符串时建议使用字符串比较函数 strcmp 来代替 memcmp因为 strcmp 能够根据字符串的终止符’\0’自动确定比较的长度而不需要显式指定比较的字节数。 堆内存的分配和释放 函数
malloc
//分配一块新的内存不会初始化。
void* malloc(size_t size);
参数size 表示欲分配的内存大小以字节为单位。
返回值成功返回一个指向分配内存的指针失败则返回 NULL。在实际开发中使用 malloc 分配动态内存可以灵活地管理和利用内存资源但也需要注意内存的释放和错误处理以确保程序的正确性和健壮性。 calloc
//与 malloc 类似用于分配指定数量的内存块。不同之处在于calloc 还会将分配的内存块初始化为0。
void* calloc(size_t num, size_t size);
参数num 表示欲分配的内存块数目size 表示每个内存块的大小以字节为单位
返回值成功返回一个指向分配内存的指针失败则返回 NULL。使用 calloc 可以方便地分配内存并初始化为零。在需要使用零初始化的情况下calloc 是一个很有用的函数。 realloc
//用于重新分配已分配内存的大小
void* realloc(void* ptr, size_t size);
参数ptr 是之前使用 malloc、calloc 或 realloc 函数分配的内存块的指针size 表示需要重新分配的内存大小以字节为单位
返回值成功返回一个指向重新分配后内存的指针失败返回 NULL。
注意 使用 realloc 重新分配内存后返回的指针可能是原有内存的地址也可能是新分配内存的地址因此在重新分配内存后要基于返回的地址进行后续的处理。使用 realloc 可以动态地调整已分配内存的大小使其更适应程序的需求。在需要动态修改内存大小的情况下realloc 是一个有用的函数。 free
//用于释放之前通过 malloc、calloc 或 realloc 分配的内存。
void free(void* ptr);内存分区
32位系统的虚拟地址空间 每个进程的虚拟地址空间都是从0地址开始的我们在程序中打印的变量地址也其在虚拟地址空间中的地址程序是无法直接访问物理内存的。虚拟地址空间中用户区地址范围是 0~3G里边分为多个区块 其他
linux下 查看内存分区 在 Linux 下可以在命令行中通过 size 命令查看二进制文件可执行文件、静态库、动态库等的大小和节section信息。 //基本语法
size [选项] [文件名]解释
text代码段可执行文件或只读数据段库文件的大小。
data已初始化数据段的大小。
bss未初始化数据段bss的大小。
dec代码段、数据段和bss段的总大小。
hex十六进制表示的 dec 的大小。
filename文件的名称。在没有运行程序前也就是说程序没有加载到内存前可执行程序内部已经分好3段信息分别为代码区text、数据区data和未初始化数据区bss3 个部分有些人直接把 data 和 bss 合起来叫做静态区或全局区。 详细教程可转
爱编程的大丙