存储类型总结内存操作函数

函数 描述 参数 返回
void *memset(void *s, int c, size_t n); 将s指针开始到n字节的内存区域,每个字节初始化为c
void *memcpy(void *dest, const void *src, size_t n); 拷贝src所指的地址往后数n个字节到dest所值的内存地址上。
void* memmove(void* dest,const void* src,size_t num) 和memcpy区别在于dest与src内存块可以重叠
int memcmp(const void *s1, const void *s2, size_t n); 比较s1和s2所指向内存区域的前n个字节

参考:https://blog.csdn.net/tanrui519521/article/details/81164275

memset

  1. 对每一个字节赋值(所以除了char外 int double long等都是拆解赋值的)
    参考:https://blog.csdn.net/u011426016/article/details/86559895
#pragma warning(disable:4996)#include<stdio.h>
#include<stdlib.h>int main()
{int* p = (int*)malloc(sizeof(int) * 10);//按字节来申请memset(p, 0, 40);for (int i = 0; i < 10; i++) {printf("%d\n", p[i]);}free(p);int* q = (int*)malloc(sizeof(int) * 10);//按字节来申请memset(q, 1, 40);//按字节来重置(int有4个字节,memset是将int的每个字节重置为1),所以只能重置为0(不能按类型大小重置)for (int i = 0; i < 10; i++) {printf("%d\n", q[i]);}free(q);system("pause");return EXIT_SUCCESS;
}

memcpy

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int *p = malloc(sizeof(int) * 10);memcpy(p, arr, 40);//将栈的数组拷贝到堆区中for (int i = 0; i < 10; i++){printf("%d\n", p[i]);}free(p);system("pause");return EXIT_SUCCESS;
}

C语言 堆内存操作相关推荐

  1. 易语言读写内存操作详解

    1.函数原型: BOOL ReadProcessMemory( HANDLE hProcess, PVOID pvAddressRemote, PVOID pvBufferLocal, DWORD d ...

  2. 【Linux 内核 内存管理】Linux 内核堆内存管理 ② ( 动态分配堆内存方式 | brk 系统调用 | mmap 系统调用 | brk 系统调用源码介绍 )

    文章目录 一.Linux 系统 动态分配堆内存 方式 二.brk 系统调用 动态分配堆内存 一.Linux 系统 动态分配堆内存 方式 Linux 系统中 , 提供了 222 种方式 进行 " ...

  3. was修改堆内存_C语言内存泄露很严重,如何应对?

    摘要:通过介绍内存泄漏问题原理及检视方法,希望后续能够从编码检视环节就杜绝内存泄漏导致的网上问题发生. 1. 前言 最近部门不同产品接连出现内存泄漏导致的网上问题,具体表现为单板在现网运行数月以后,因 ...

  4. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  5. C语言的内存管理(堆,栈,代码段,数据段)

    C语言的内存管理(堆,栈,代码段,数据段) 一.几个基本概念 在C语言中,关于内存管理的知识点比较多,如函数.变量.作用域.指针等,在探究C语言内存管理机制时,先简单复习下这几个基本概念: 1.变量: ...

  6. 二叉堆--insert操作以及deleteMin操作的实现(C语言)

    二叉堆--insert操作以及deleteMin操作的实现(C语言) 一.概念回顾 1. 什么是二叉堆? 二叉堆其实就是一棵完全二叉树,但是它相比一般的完全二叉树又多了一些限制: (1)对于二叉堆来说 ...

  7. 【C 语言】结构体 ( 指针运算与指针内存操作 | 结构体成员偏移量计算 )

    文章目录 一.指针运算 与 指针内存操作 二.结构体偏移量计算 一.指针运算 与 指针内存操作 指针变量算术运算 ( 指针可以是任意值 ) : 指针 是一个变量 , 如果对指针进行 算术 / 逻辑 等 ...

  8. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  9. 【C 语言】内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )

    文章目录 一.函数返回的堆内存指针 二.函数返回的栈内存指针 一.函数返回的堆内存指针 在 main 主函数中 , 调用 get_memory 子函数 , 返回 malloc 初始化的堆内存 , 可以 ...

最新文章

  1. python显示当前时间
  2. 刘伟:什么是智能人机交互?
  3. 第四篇[机器学习] 机器学习,线性回归的优化
  4. bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片
  5. 支付宝人脸数据被共享?李开复道歉
  6. 【网址收藏】VMware虚拟机安装Windows7
  7. CUDA学习(九十八)
  8. hdu 1864 01背包
  9. 8. Sphinx 站内搜索
  10. Pytorch运行错误:CUDA out of memory处理过程
  11. linux 第六章 linux中的进程管理
  12. Deep Homography Estimation - Pytorch实现
  13. 英语口语智能测试软件,口语易英语口语智能评测系统(英语口语训练软件)V6.91 最新版...
  14. 玩转电脑|电脑回收站还能这么玩,自定义图标让你的回收站与众不同
  15. 什么是B2B,B2C,C2C?
  16. 【ospf的三类LSA sum-net】(真假ABR、区域间防环机制、vlink)
  17. java audioinputstream 读取音频文件_从原始文件中获取最多x个字节的AudioInputStream(剪切音频文件)...
  18. scrcpy - 手机无线投屏到电脑
  19. QMetaObject使用
  20. 可动态迁移的 mysql 架构

热门文章

  1. xrdp协议_XRDP与VNC的关系(转载)
  2. 压测瓶颈在mysql_MySQL的性能基线收集及压力测试
  3. Python使用matplotlib绘制正多边形逼近圆周
  4. 1000道Python题库系列分享七(30道)
  5. C++ C++基础语法入门总结(二)引用-内联函数-C++11新特性
  6. Linux共享内存和信号量,Linux共享内存和信号量的实例(2)
  7. linux查看ip访问日志文件,linux分析apache日志获取最多访问的前10个IP
  8. mysql 修改这段长度_MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!...
  9. C 设计语言编译生成的是中间语言IL,一、源代码-面向CLR的编译器-托管模块-(元数据IL代码)...
  10. mysql 编辑数据库内容_详解mysql数据库增删改操作