1.内存管理原理的介绍1.1C的内存管理char *p = (char *)malloc(100*sizeof (char));这是C的动态内存分配,我们手动跟系统申请了100个字节的内存;或者说系统在堆里开辟了100个字节的空间,并将这个空间的首地址返回给指针变量p。strcpy(p,"Hello...
分类:
编程语言 时间:
2014-12-16 18:49:39
阅读次数:
379
1.内存管理原理的介绍
1.1C的内存管理
char *p = (char *)malloc(100*sizeof (char));
这是C的动态内存分配,我们手动跟系统申请了100个字节的内存;或者说系统在堆里开辟了100个字节的空间,并将这个空间的首地址返回给指针变量p。
strcpy(p,"Hello World!");
将字符串拷贝给指针...
分类:
编程语言 时间:
2014-12-16 10:02:39
阅读次数:
298
1.内存管理原理的介绍1.1C的内存管理 char *p = (char *)malloc(100*sizeof (char)); 这是C的动态内存分配,我们手动跟系统申请了100个字节的内存;或者说系统在堆里开辟了100个字节的空间,并将这个空间的首地址返回给指针变量p。 strcpy(p,"He...
分类:
编程语言 时间:
2014-12-14 21:17:31
阅读次数:
217
动态内存分配和释放一直不怎么明白。实验程序为: 1 # include 2 # include 3 using namespace std; 4 5 int main() 6 { 7 int *p; 8 if((p = new int(5)) == 0) 9 {10 ...
分类:
编程语言 时间:
2014-12-10 16:14:30
阅读次数:
216
动态内存分配策略:1,从高地址分配不理会已分配给用户内存是否有空闲。直到无法分配位置。系统才去回收用户不能使用的空闲块,并且重新组织内存。2,另一种是用户一旦运行结束,将它占用的内存释放到空闲块。有新请求时,巡视空闲块,找到一个“合适”的分配之。可利用空间表分配方法2种结构(目录表,链表),目录表起...
分类:
其他好文 时间:
2014-11-30 21:23:36
阅读次数:
243
1.进程组成 一个内核对象,操作系统用它来管理进程。 一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据。此外,它还包含动态内存分配,比如线程堆栈和堆的分配。 2.一个进程可以有多个线程,所有线程都在进程的地址空间中“同时”执行代码。每个进程至少要有一个线程来执行进程地址空间包含的代码。 ...
网上总结到的信息:
(1) 静态分派:是在栈上分配,是由用户自己申请,是由操作系统自己释放的
动态分配:是由编译器分配,操作系统没有提供这种机制,所以自己申请,必须自己删除!
(2)你也要明白,栈的容量非常的小,而且特别贵,不能满足所有的内存申请,所以就要动态分配,
(3)动态分配是编译器自己完成的,跟操作系统没有关系
(4) 动态分配效率比较低,不过容量跟用户需求有关。
(5)C...
分类:
其他好文 时间:
2014-11-15 00:15:32
阅读次数:
142
阻塞队列是后台开发中多线程异步架构的基本数据结构,像python, java 都提供线程安全的阻塞队列,c++ 可能需要自己实现一个模板。
从性能考虑,自己没有使用STL的queue作为基本数据结构,而是使用循环数组作为基本数据结构,性能应该比queue高,省去了动态内存分配和回收。
确定就是,队列大小不可动态扩展,当时实际开发中,可以通过压力测试,配置合适的队列大小。
代码量非常小,可以进行工程开发直接使用。...
分类:
编程语言 时间:
2014-11-14 00:15:05
阅读次数:
500
malloc/free与new/delete的区别:相同点:都可用于动态内存分配与释放;不同点:1):操作对象有所不同。malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,所以无法执行构造函...
分类:
其他好文 时间:
2014-11-10 13:28:47
阅读次数:
215
上篇文章我们介绍了JVM所管理的内存结构也就是运行时数据区(Run-Time Data Areas),现在我们将介绍JVM的内存分配与回收静态内存分配与动态内存分配JVM的内存分配主要分为两种:静态内存分配与动态内存分配与之对应的是基本类型内存分配与对象内存分配;1、静态内存分配静态内存分配在编译时...
分类:
其他好文 时间:
2014-11-02 20:53:14
阅读次数:
165