
内存
持成
开发中的菜鸟,菜鸟中得战斗机,为了菜鸟的荣耀,万胜!!!
https://github.com/ccovers
展开
-
c/c++关于内存分配的知识
一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量转载 2016-11-10 10:11:57 · 270 阅读 · 0 评论 -
堆栈分配对象的成员存储位置
栈上创建的临时对象及其成员可以确定存储在栈上但是如果在堆上面手动分配一个对象,那么这个对象的成员究竟存储在内存中的什么位置?分别创建一个栈上分配的临时结构体对象和一个堆上手动分配的结构体对象,打印存储位置。#include #include typedef struct _MemInfo { int value; int *ptr; char sa原创 2017-08-01 17:42:20 · 945 阅读 · 0 评论 -
valgrind 入门
安装Centos: yum install valgrindubuntu: apt-get install valgrind2、编辑错误代码1 #include 2 #include 3 4 int main()5 {6 int *p = (int *)malloc(10 * sizeof(int));7 p[10] = 0;8 return 0;9 }编译原创 2018-01-19 16:12:30 · 269 阅读 · 0 评论 -
C++函数调用 段错误
调用一个函数时发生段错误:Segmentation fault加入打印日志之后,发现运行时根本没有进入该函数就已经crash,将该函数全部注释掉在运行时又一切正常。经过调试发现原因:该函数中存在一个大数组#define BUFFER_SIZE (1024 * 1024)char buffer[BUFFER_SIZE];将BUFFER_SIZE改为(4 * 1024)之后程序运行正常。分析结果:函数...原创 2018-03-15 15:40:50 · 3962 阅读 · 0 评论