内存管理 c语言的内存分两种:静态内存,动态内存 静态内存 静态内存包括 栈区,数据区,代码区 [特点] <1>静态内存,由系统进行分配 who <2>静态内存的大小在程序运行之前就可以确定 when <3>静态内存是在 栈区,数据区,代码区 进行分配的 where <4>静态内存,由系统进行释放 ...
分类:
其他好文 时间:
2016-09-21 14:34:09
阅读次数:
130
今天笔试遇到的一道题,我当时写的new delete malloc free,但感觉有点文不对题。回来搜了下,现总结如下: 栈:程序在执行的时候分配,如函数中的局部变量,执行完函数后自动释放相应的内存。 堆:动态内存,用new 或malloc分配,需手动对其进行释放。 全局/静态存储区:程序在编译的 ...
分类:
编程语言 时间:
2016-09-20 22:34:27
阅读次数:
173
C++中的动态内存分配机制 c++中使用new和delete来完成在堆上对动态内存的分配和释放。 注.所有指针都应该被初始化 如果指针指向的动态内存被释放或没有指向合法的地址,就应该将指针设置为nullptr,否则内存泄漏。 变量: double* pvalue {}; pvalue=new dou ...
分类:
其他好文 时间:
2016-09-20 19:59:28
阅读次数:
129
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 malloc实现了在堆内存管理中进行按需分配的机制,但是它不提供在C++中对像构造的支持; new 则是一个 在C++中同时完成堆内存按需分配支持和对像构造功能的运算符 ...
分类:
编程语言 时间:
2016-09-17 01:51:19
阅读次数:
217
/* 总结:就是建立一个循环单链表,再按循环取余删除节点: 注意:1.未给指针变量s分配动态内存时,让其等于别的分配内存的指针(q)相当于 把 s指向其内存,并不能建立链接。 2.此链表带头节点 遇到问题 :1.在选择人的时候遇到了阻碍(不知如何选) 2.设置头节点,循环(难点) */#includ ...
分类:
其他好文 时间:
2016-09-14 01:56:18
阅读次数:
160
/*注意 声明结构体时,struct node l 函数用f(&l)参数必须带取地址符 传参时 传的是结构体首地址 若要使用指针指向结构体那必须为这个结构体分配动态内存 否则 无法使用 顺序栈:利用一组连续的存储单元依次存放自栈底到栈顶的数据元素;由于栈顶元素是经常变动的,所以附设top指示栈顶元素 ...
分类:
其他好文 时间:
2016-09-13 06:46:27
阅读次数:
123
segmentation fault:段错误 一般有以下原因容易造成段错误: 1)指针: 指针为空"NULL",或者指针未初始化就使用,指针使用完后未释放 2)内存(超出分配的内存空间): 对数组操作不当,数组越界;对字符串操作不当(比如在使用strcpy函数时),字符串空间越界;对动态内存操作不当 ...
分类:
其他好文 时间:
2016-09-09 15:04:20
阅读次数:
131
1.数组跟指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。 数组和 ...
分类:
编程语言 时间:
2016-09-08 23:03:57
阅读次数:
196