1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用...
分类:
编程语言 时间:
2014-05-23 08:32:21
阅读次数:
460
1 缓冲区溢出原理
缓冲区是一块连续的计算机内存区域,可保存相同数据类型的多个实例。缓冲区可以是堆栈(自动变量)、堆(动态内存)和静态数据区(全局或静态)。在C/C++语言中,通常使用字符数组和malloc/new之类内存分配函数实现缓冲区。溢出指数据被添加到分配给该缓冲区的内存块之外。缓冲区溢出....
分类:
其他好文 时间:
2014-05-23 08:05:04
阅读次数:
332
(1)分配函数
void *malloc(sizeof(unsigned size)
功能:在内存的动态存储区中分配一块长度位size的连续空间。
返回值:指针,存放被分配内存的起始地址。若未申请到空间,则返回NULL(0)。
void *:指向任何类型的数据,在使用时,要进行强制类型转换。
例如:int *malloc(sizeof(int))
struct student *mal...
分类:
其他好文 时间:
2014-05-21 17:10:29
阅读次数:
231
#include
#include
typedef int elemType;
typedef struct Node{//定义单链表节点类型
elemType data;
Node *next;
}Node,*linkList;
//初始化链表,单链表的头指针为空
int initList(linkList &L)
{
L= (Node *)malloc(sizeof(Node));...
分类:
其他好文 时间:
2014-05-21 11:19:08
阅读次数:
228
一、什么是共享内存
顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影...
分类:
系统相关 时间:
2014-05-21 10:42:26
阅读次数:
626
#include
#include //要使用malloc(),必须包含此库文件
void main()
{
char count, *ptr1, *p;
ptr1 = malloc(27*sizeof(char));
ptr1[26] = 0;//字符串要加0
if (ptr1 == NULL)
{
puts("没有足够的空间卡可以分配!\n");
}
p = ptr1...
分类:
编程语言 时间:
2014-05-21 07:11:10
阅读次数:
275
_hashMap.insert(pair<String,HASH_TABLE*>(tmp,hashtabletmp));这句会报segment或abort错误经同事帮看,也翻来覆去自查,终于发现原来是malloc中hTable->hList=(pHASH_ENTRY)malloc(hTable->listLen*(HASH_ENTRY_SIZE));这句写成了hTable->hList=(pHASH_ENTRY)..
分类:
其他好文 时间:
2014-05-20 20:20:34
阅读次数:
288
栈是系统为一个程序所分配的一块固定的区域,函数的局部变量都存在这堆允许程序在运行时动态地申请某个大小的内存空间。使用malloc等内存分配函数获取内存即是从堆中分配内存,而在一个函数体中例如定义一个数组之类的操作是从栈中分配内存所能申请的大小区别:栈:只要栈的剩余空间大于所申请空间,系统将为程序提供...
分类:
其他好文 时间:
2014-05-20 09:23:16
阅读次数:
246
/这里是链表的创建其包含的是头指针phead,头节点,以及尾节点p->next = NULL
为链表创建结束标志。/判断指针为空十分重要,当然也不能忘了释放,代码是:if(head !=NULL){free(head);head = NULL;}head
= (SLNode*)malloc(size...
分类:
其他好文 时间:
2014-05-17 19:40:54
阅读次数:
255
//使用动态分配内存时,要包含头文件
//malloc的参数为要分配的内存的字节数
//其返回所分配内存的第一个字节的地址
//返回类型是void*,但实际中常常转换为具体类型便于使用
//如果因某种原因而不能分配将返回NULL指针,所以使用时应验证是否分配成功
int *pNumber1=(int *)malloc(100*sizeof(int));
//callo...
分类:
其他好文 时间:
2014-05-15 23:21:54
阅读次数:
338