主题:内存的管理 DATE:2004-09-17

简介: 主题:内存的管理时间:9月17日下午3点主持:A1.Aleyn.wu地点:5726882 (会议室) 2004-09-17 15:00:57 A1.Aleyn.wu(45198124)今天是主题其实是最简单的,但也是最头痛的主题,所以,我们单独拿出来炒一下。

主题:内存的管理
时间:9月17日下午3点
主持:A1.Aleyn.wu
地点:5726882 (会议室)

2004-09-17 15:00:57 A1.Aleyn.wu(45198124)
今天是主题其实是最简单的,但也是最头痛的主题,所以,我们单独拿出来炒一下。

2004-09-17 15:01:20 A1.Aleyn.wu(45198124)
上次的银行卡事件是前提

2004-09-17 15:02:10 TCP/IP INFO(31329846)
可否简要说一下 银行卡事件

2004-09-17 15:02:52 A1.Aleyn.wu(45198124)
我重复一下上一次的东西。

2004-09-17 15:03:02 D3天之痕若虹(86278566)
什么????银行卡事件

2004-09-17 15:03:31 A1.Aleyn.wu(45198124)
农村信用卡 GetMem,FreeMem

2004-09-17 15:04:00 A1.Aleyn.wu(45198124)
忘了有几个卡了,谁还记得。[:~]


2004-09-17 15:06:02 00.天地弦/zhao(185511468)
GetMem和FreeMem是农村信用卡。
New和Dispose是建行借记卡(龙卡)
GlobalAlloc和GlobalFree是工行牡丹卡
VirtualAlloc和VaitualFree是信用卡。 

2004-09-17 15:06:15 开心的武稀松(42088303)
我好像还补充了两个方法

2004-09-17 15:06:29 00.天地弦/zhao(185511468)
2004-09-13 15:08:46 开心的武稀松(42088303)
还有AllocMem,ReallocMem。 

2004-09-17 15:06:31 A1.Aleyn.wu(45198124)
对,武老二加入两个。

2004-09-17 15:06:39 00.天地弦/zhao(185511468)
GetMem和FreeMem是农村信用卡。
New和Dispose是建行借记卡(龙卡)
GlobalAlloc和GlobalFree是工行牡丹卡
VirtualAlloc和VaitualFree是信用卡。
还有AllocMem,ReallocMem。

2004-09-17 15:06:44 00.天地弦/zhao(185511468)
行了吧

2004-09-17 15:06:53 00.天地弦/zhao(185511468)
2004-09-13 15:09:40 A1.Aleyn.wu(45198124)
我用得最多的是农村信用卡和工行牡丹卡 

2004-09-17 15:07:09 00.天地弦/zhao(185511468)
2004-09-13 15:10:56 A1.Aleyn.wu(45198124)
想搞对象,卡你都有了吗,没有的话保证吹了。[:D] 


2004-09-17 15:08:01 A1.Aleyn.wu(45198124)
好,现在正式进入正题。

2004-09-17 15:08:13 A1.Aleyn.wu(45198124)
从第一种卡开始讨论。

2004-09-17 15:08:22 00.天地弦/zhao(185511468)
GetMem和FreeMem是农村信用卡。

2004-09-17 15:09:09 A1.Aleyn.wu(45198124)
为什么说GetMem和FreeMem是农村信用卡呢?

2004-09-17 15:09:47 开心的武稀松(42088303)
其实我觉得这两个非常实用

2004-09-17 15:10:06 A1.Aleyn.wu(45198124)
大家回忆一下,GetMem和FreeMem是用在哪么地方的?
农村信用卡的局限性是什么?

2004-09-17 15:10:53 A1.Aleyn.wu(45198124)
农村信用卡能不能跨市使用?

2004-09-17 15:11:28 00.天地弦/zhao(185511468)
在Delphi是怎么解释呢

2004-09-17 15:11:33 A1.Aleyn.wu(45198124)
不知他们改革了没有,我是记得不可以的。

2004-09-17 15:11:34 TCP/IP INFO(31329846)
不能跨进程 or 线程

2004-09-17 15:12:10 飘尘(43745429)
晕。

2004-09-17 15:12:53 A1.Aleyn.wu(45198124)
如果把程序比较做城市的话,GetMem就是农村信用卡了

2004-09-17 15:13:30 00.天地弦/zhao(185511468)
老吴程序你是说一个Application

2004-09-17 15:13:59 A1.Aleyn.wu(45198124)

2004-09-17 15:14:33 A1.Aleyn.wu(45198124)
请先不要贴图好不,各位大侠们。

2004-09-17 15:14:39 00.天地弦/zhao(185511468)
不是很理解

2004-09-17 15:14:51 00.天地弦/zhao(185511468)
各位不听话的同学

2004-09-17 15:15:25 00.天地弦/zhao(185511468)
要注意影响,自己不听可以睡觉但是不要影响其他同学。老师常说的[;P]

2004-09-17 15:16:05 A1.Aleyn.wu(45198124)
先提问一下。GetMem和FreeMem有几个朋友熟悉?

2004-09-17 15:16:16 00.天地弦/zhao(185511468)
我很少用

2004-09-17 15:16:21 开心的武稀松(42088303)
这个是最基本的吧

2004-09-17 15:16:31 00.天地弦/zhao(185511468)
为什么有龙卡不用要用信用卡

2004-09-17 15:17:09 A1.Aleyn.wu(45198124)
这几个卡各有所用,待会慢慢来讨论。

2004-09-17 15:17:29 TCP/IP INFO(31329846)
操作系统,分配的堆不同

2004-09-17 15:18:20 HUI云中鹤(20695124)
打个比喻来的

2004-09-17 15:18:38 HUI云中鹤(20695124)
让你好接受

2004-09-17 15:18:47 开心的武稀松(42088303)
看看
X:\Program Files\Borland\Delphi7\Source\Rtl\Sys\getmem.inc
里面的函数,整个Delphi和VCL的内存分配就毫无神秘可言了

2004-09-17 15:19:25 C03.MUSIC(281361369)
开心兄,确实也很牛

2004-09-17 15:20:51 开心的武稀松(42088303)
看看System.PAS中的MemoryManager,整个Delphi的内存分配和释放都在这里管理。当然你也可以接管

2004-09-17 15:21:17 A1.Aleyn.wu(45198124)
GetMem分配的内存,在本地程序存在时有较,当本地程序释放时,内存也不见了。

2004-09-17 15:21:47 C03.MUSIC(281361369)
那如果在程序退出前我没有FREEMEM,也会不见了吗?

2004-09-17 15:22:14 00.天地弦/zhao(185511468)
应该是的

2004-09-17 15:22:26 A1.Aleyn.wu(45198124)
对,你可以试一下,在DLL和EXE中沟通。

2004-09-17 15:22:41 C03.MUSIC(281361369)
噢?怎么试法?

2004-09-17 15:23:30 开心的武稀松(42088303)
A1兄。但是DLL中分配的,DLL我释放掉,EXE应该还可以访问这片内存的阿,怎么会自动释放?

2004-09-17 15:23:58 A1.Aleyn.wu(45198124)
在EXE中定义一个指针,在DLL中用GetMem申请内存,然后FreeLibrary,不要FreeMem,看看EXE中的指针能不能用。

2004-09-17 15:24:20 开心的武稀松(42088303)
我觉得应该可以的。

2004-09-17 15:24:25   た少林足球(59552649)
当exe调用dll,然后释放,可是dll好象还是存在,不能真正从内存释放是不是

2004-09-17 15:24:27 C03.MUSIC(281361369)
噢,阿拉明白

2004-09-17 15:25:32 A1.Aleyn.wu(45198124)
要不大家先讨论一下,我花十分钟写一个DEMO出来。

2004-09-17 15:25:46 开心的武稀松(42088303)
因为DLL和宿主EXE公用宿主的进程空间,分配的内存也是在宿主的进程空间内,我觉得不会被自动释放掉。

2004-09-17 15:25:56 00.天地弦/zhao(185511468)

2004-09-17 15:26:07 C03.MUSIC(281361369)
要不我先问个问题,让老大先DEMO

2004-09-17 15:26:36 开心的武稀松(42088303)
A1可以用LoadLibrary和

2004-09-17 15:26:53 开心的武稀松(42088303)
FreeLibrary试验一下

2004-09-17 15:27:11 A1.Aleyn.wu(45198124)
等等,我在写DEMO。

2004-09-17 15:27:20 00.天地弦/zhao(185511468)
好的

2004-09-17 15:27:29 00.天地弦/zhao(185511468)
我们自由讨论一下吧

2004-09-17 15:28:11 C03.MUSIC(281361369)
我更新数据时出现“另一个用户修改了数据”,我现在想忽略这个错误,让“另一个用户”的数据做为正确数据,继续更新,如何做法,请帮忙

2004-09-17 15:28:38 00.天地弦/zhao(185511468)
看看李维的那本书

2004-09-17 15:28:53 C03.MUSIC(281361369)
我看了,上面没有具体讲 

2004-09-17 15:29:19 Ansili(69786714)
讲了的。

2004-09-17 15:29:31 肖宇(236309574)
当我用EXE文件吊用DLL时,老是出现地址冲突该咋办?

2004-09-17 15:29:36 D3天之痕若虹(86278566)
<高效数据库设计>上有说吧

2004-09-17 15:29:51 银狼(43225570)
我想应该知道是哪条记录被错误返回了,然后在按照它的主键重新下它,再更新,你看如何    C3

2004-09-17 15:30:00 00.bit(10910310)
<高效数据库设计>是谁写的
 

2004-09-17 15:30:07 银狼(43225570)
李维

2004-09-17 15:30:32 C03.MUSIC(281361369)
是讲DBEXPRESS的那本书吗?

2004-09-17 15:30:44 TCP/IP INFO(31329846)
function _GetMem(Size: Integer): Pointer;
{$IF Defined(DEBUG) and Defined(LINUX)}
var
  Signature: PLongInt;
{$IFEND}
begin
  if Size > 0 then
  begin
{$IF Defined(DEBUG) and Defined(LINUX)}
    Signature := PLongInt(MemoryManager.GetMem(Size + 4));
    if Signature = nil then
      Error(reOutOfMemory);
    Signature^ := 0;
    Result := Pointer(LongInt(Signature) + 4);
{$ELSE}
    Result := MemoryManager.GetMem(Size);
    if Result = nil then
      Error(reOutOfMemory);
{$IFEND}
  end
  else
    Result := nil;
end;
 

2004-09-17 15:30:55 银狼(43225570)
我没看过还

2004-09-17 15:31:15 TCP/IP INFO(31329846)
  MemoryManager: TMemoryManager = (
    GetMem: SysGetMem;
    FreeMem: SysFreeMem;
    ReallocMem: SysReallocMem);
 

2004-09-17 15:31:18 C03.MUSIC(281361369)
D3

2004-09-17 15:31:31 TCP/IP INFO(31329846)
function SysGetMem(Size: Integer): Pointer;
begin
  Result := __malloc(size);
end;
 

2004-09-17 15:32:22 00.天地弦/zhao(185511468)
MemoryManager在哪里我怎么找不到

2004-09-17 15:32:41 TCP/IP INFO(31329846)
他是一个变量

2004-09-17 15:32:50 TCP/IP INFO(31329846)
全局的

2004-09-17 15:33:07 TCP/IP INFO(31329846)
System单元

2004-09-17 15:33:08 00.天地弦/zhao(185511468)
在system unit里

  PMemoryManager = ^TMemoryManager;
  TMemoryManager = record
    GetMem: function(Size: Integer): Pointer;
    FreeMem: function(P: Pointer): Integer;
    ReallocMem: function(P: Pointer; Size: Integer): Pointer;
  end;

2004-09-17 15:33:44 TCP/IP INFO(31329846)
{$IFDEF EFENCE}
function __malloc(Size: Integer): Pointer; cdecl;
  external 'libefence.so' name 'malloc';
{$ELSE}
function __malloc(Size: Integer): Pointer; cdecl;
  external libc name 'malloc';

2004-09-17 15:35:35 A1.Aleyn.wu(45198124)
http://www.e-midas.cn/test/TestGetMem.rar

2004-09-17 15:35:57 A1.Aleyn.wu(45198124)
大家快下载看一下,然后继续开课。

2004-09-17 15:36:04 开心的武稀松(42088303)
A1兄说得对,确实是这样的。我也写了一个DEMO。证实了你所说的

2004-09-17 15:37:19 A1.Aleyn.wu(45198124)
button1和button2是不同的。

2004-09-17 15:37:23 开心的武稀松(42088303)
有点不明白DLL应该没有自己的空间,它的GetMem是分配在哪里的,他怎么知道如何释放的

2004-09-17 15:37:43 A1.Aleyn.wu(45198124)
对,武兄说的也就是我们要讨论的东西之一。

2004-09-17 15:38:02 A1.Aleyn.wu(45198124)
所以说,最基本的东西却是我们最头痛的东西。

2004-09-17 15:38:21 开心的武稀松(42088303)
我知道了

2004-09-17 15:38:39 开心的武稀松(42088303)
A1兄说的也不尽对。我又做了一个试验

2004-09-17 15:38:43 A1.Aleyn.wu(45198124)
也就是说它是农村信用卡的原因。

2004-09-17 15:39:30 A1.Aleyn.wu(45198124)
在我的DEMO里有两个试验,一个可以,一个不可以,原因大家可以讨论一下。

2004-09-17 15:39:53 开心的武稀松(42088303)
因为Delphi所制的DLL里面有自己的System单元的MemoryManager内存管理器。DLL释放的时候内存管理器会清理内存


2004-09-17 15:40:31 A1.Aleyn.wu(45198124)
button1,先FreeLibrary,再使用pp,就出现问题了。

2004-09-17 15:40:54 A1.Aleyn.wu(45198124)
button2,先用pp,再FreeLibrary,所有问题没有出现。

2004-09-17 15:41:13 开心的武稀松(42088303)
但是如果宿主EXE是带VCL包运行,而DLL也是带VCL包运行。这样他们共享一个内存管理器,这样的DLL释放掉就不会清理内存,因为MemoryManager是和EXE公用的。

2004-09-17 15:41:36 开心的武稀松(42088303)
所以A1

2004-09-17 15:41:46 A1.Aleyn.wu(45198124)
武兄把问题给细化了。[:D]

2004-09-17 15:41:50 开心的武稀松(42088303)
所以A1说得使双方都不带包的情况下

2004-09-17 15:42:14 00.天地弦/zhao(185511468)
武老大,你的DLL一般带包不

2004-09-17 15:42:42 开心的武稀松(42088303)
如果带包就会小很多,而且可以用String等很方便。我有时候会带包运行

2004-09-17 15:43:41 A1.Aleyn.wu(45198124)
假如,都带包的话,就不需要讨论这个GetMem和其它卡的问题了,因为,使用了同一个内存管理器。

2004-09-17 15:43:53 D3天之痕若虹(86278566)
to: A1
  在DLL 要uses sharemem吧
  

2004-09-17 15:43:57 HUI云中鹤(20695124)
A1 你是指DLL给单个EXE调用时的情况吧

2004-09-17 15:44:03 00.天地弦/zhao(185511468)
A1继续

2004-09-17 15:44:33 A1.Aleyn.wu(45198124)
所以,今天的课是指一般情况下,也就是生成可执行的文件(不带包运行的)

2004-09-17 15:44:55 A1.Aleyn.wu(45198124)
to D3,不需要。

2004-09-17 15:45:02 A1.Aleyn.wu(45198124)
to Hui,不只。

2004-09-17 15:45:32 开心的武稀松(42088303)
如果带包的话很方便,不用ShareMem就可以直接使用String做返回值和参数

2004-09-17 15:45:51 C03.MUSIC(281361369)
带包是指把BPL与可执行文件一起吗?

2004-09-17 15:46:08 A1.Aleyn.wu(45198124)
对。

2004-09-17 15:46:11 开心的武稀松(42088303)
先不讨论这个了,算是特例。A1继续吧

2004-09-17 15:47:24 A1.Aleyn.wu(45198124)
按照这个DEMO,我们可以想象,GETMEM是根居在哪申请就在哪存在。

2004-09-17 15:47:29 A1.Aleyn.wu(45198124)
对否?

2004-09-17 15:48:00 00.天地弦/zhao(185511468)
在DLL申请,就在DLL存在,DLL不存在了,也完了

2004-09-17 15:48:06 开心的武稀松(42088303)
在哪里申请就由哪里的内存管理器管理更确切一点

2004-09-17 15:48:55 A1.Aleyn.wu(45198124)
对,农村信用卡也差不多也,君不见之前的信合社风波。。。

2004-09-17 15:49:49 00.天地弦/zhao(185511468)
呵呵

2004-09-17 15:49:55 HUI云中鹤(20695124)
在哪里申请的卡就只能在哪里用吧?

2004-09-17 15:50:03 00.天地弦/zhao(185511468)
New和Dispose是建行借记卡(龙卡) 讲这个了吧

2004-09-17 15:50:15 00.天地弦/zhao(185511468)
在DLL申请,就在DLL存在,DLL不存在了,也完了 

2004-09-17 15:50:23 A1.Aleyn.wu(45198124)
对。

2004-09-17 15:50:44 00.天地弦/zhao(185511468)
在DLL申请,DLL存在时就存在,DLL不存在了也就不存在了,是吧

2004-09-17 15:50:58 A1.Aleyn.wu(45198124)
等等,我做第二个。

2004-09-17 15:51:43 HUI云中鹤(20695124)
DLL不存在了也就不存在了----是DLL不存在了,就自动释放了吗

2004-09-17 15:51:46 欢乐狗熊(228175978)
不见的吧

2004-09-17 15:52:00 开心的武稀松(42088303)
MemoryManager管理器不在了就释放了

2004-09-17 15:52:08 00.天地弦/zhao(185511468)
to UI云中鹤嗯,我的理解是这个的

2004-09-17 15:52:21 HUI云中鹤(20695124)
我也是

2004-09-17 15:52:26 00.天地弦/zhao(185511468)
DLL和Exe是两个不同的MemoryManager是吧

2004-09-17 15:52:39 00.天地弦/zhao(185511468)
武老大

2004-09-17 15:52:39 飘尘(43745429)
内存总不是一个文件管理器差不多的

2004-09-17 15:52:42 欢乐狗熊(228175978)
不是公用的吗,不见的全部放吧

2004-09-17 15:53:04 开心的武稀松(42088303)
不共享运行包的情况下是两个管理器

2004-09-17 15:53:10 00.天地弦/zhao(185511468)

2004-09-17 15:54:21 TCP/IP INFO(31329846)
关于,包的加载问题,能不能说一下呀

2004-09-17 15:54:30 C03.MUSIC(281361369)
改成A2就可以了

2004-09-17 15:54:31 开心的武稀松(42088303)
在等A1兄的高见。讨论了一番却是纠正了一些理解

2004-09-17 15:54:45 00.天地弦/zhao(185511468)
是的

2004-09-17 15:55:12 TCP/IP INFO(31329846)
包的加载,和 dll 的加载是不是相同

2004-09-17 15:55:23 开心的武稀松(42088303)
包也是DLL

2004-09-17 15:55:32 欢乐狗熊(228175978)
应该差不多吧

2004-09-17 15:55:37 开心的武稀松(42088303)
只不过是由约定好的了的DLL

2004-09-17 15:58:10 TCP/IP INFO(31329846)
假如,都带包的话,就不需要讨论这个GetMem和其它卡的问题了,因为,使用了同一个内存管理器。
这句不解

2004-09-17 15:58:52 00.天地弦/zhao(185511468)
带包就共享内存的

2004-09-17 16:00:42 A1.Aleyn.wu(45198124)
今天讨论完之后,我们再讨论这个编号的问题。EDS队员名单如下。http://www.e-midas.cn/EDSList.asp

2004-09-17 16:01:24 开心的武稀松(42088303)
天地会你入不

2004-09-17 16:01:29 A1.Aleyn.wu(45198124)
= = Demo ing

2004-09-17 16:01:39 蒙雨(19171290)
老大,我可不可以入会呀 

2004-09-17 16:01:43 TCP/IP INFO(31329846)
带包就共享内存的
还是不解

2004-09-17 16:02:03 00.天地弦/zhao(185511468)
我当然要入了
我排了很久了
你一进去就是董事会
我从职员做起

2004-09-17 16:02:15 开心的武稀松(42088303)
确切的说DLL和EXE本来就是共享内存的。带包是共享内存管理器

2004-09-17 16:04:17 00.天地弦/zhao(185511468)
差点误人子弟了,幸好武老大纠正

2004-09-17 16:04:22 00.天地弦/zhao(185511468)
42088303(开心的武稀松) 16:02:15
确切的说DLL和EXE本来就是共享内存的。带包是共享内存管理器 

2004-09-17 16:06:05 D3天之痕若虹(86278566)
[:D]言规正传。。。

2004-09-17 16:06:14 00.天地弦/zhao(185511468)
A1还在Demo ing

2004-09-17 16:08:29 A1.Aleyn.wu(45198124)
大家把刚才的文件重新下载一下,这次加了New()

2004-09-17 16:11:38 A1.Aleyn.wu(45198124)
大家试一下,New和GetMem是差不多的。

2004-09-17 16:12:11 A1.Aleyn.wu(45198124)
只不过是New比GetMem“先进”了一些。(好象是这样吧)

2004-09-17 16:12:48 D1.jackey(409485288)
在忙。晚上看qq记录.

2004-09-17 16:13:18 00.天地弦/zhao(185511468)
还没有搞定

2004-09-17 16:13:50 开心的武稀松(42088303)
应该是GetMem比New先进。New只能分配有类型的指针,只能分配一个长度

2004-09-17 16:14:11 00.天地弦/zhao(185511468)
new是龙卡哦

2004-09-17 16:14:49 开心的武稀松(42088303)
卡是先进,但不灵活

2004-09-17 16:15:00 B1.斜阳(249208513)
我不清楚大家注意到没有,释放内存的函数,可以不指定要释放的指针到底指向了多大的内存,但是一样可以正确释放?Why?

2004-09-17 16:15:00 A1.Aleyn.wu(45198124)
在有类型的指针的情况下,new比GetMem方便

2004-09-17 16:15:26 开心的武稀松(42088303)
New只能分配一个长度,GetMem可以分配一大片

2004-09-17 16:15:38 A1.Aleyn.wu(45198124)
对,所以说各有所长。

2004-09-17 16:15:58 A1.Aleyn.wu(45198124)
要不它就不会搞二个出来,一个就够了。[:D]

2004-09-17 16:16:08 开心的武稀松(42088303)
一个方便,一个灵活

2004-09-17 16:16:19 B1.斜阳(249208513)
只要不是使用Windows自带的API直接申请内存,所有的内存管理最终好像都归结到那个内存管理器上的那个分配内存的过程上了

2004-09-17 16:16:37 A1.Aleyn.wu(45198124)
呵呵,所见略同也。

2004-09-17 16:16:55 A1.Aleyn.wu(45198124)
这也许也是Delphi故意的。

2004-09-17 16:17:12 开心的武稀松(42088303)
C也是一样的

2004-09-17 16:17:36 B1.斜阳(249208513)
其实这也许是Pascal语言遗留下来的兼容问题吧

2004-09-17 16:17:50 大羽(393921295)
GetMem是动态的block,如果频繁的插入等操作
维护这个block会影响性能把,

2004-09-17 16:18:43 B1.斜阳(249208513)
我觉得,如果你让Delphi去管理你的底层内存,那你就放心使用New或者GetMem就是了,否则,就直接使用API

2004-09-17 16:18:48 开心的武稀松(42088303)
大羽是说链表么?那你说呢

2004-09-17 16:18:51 A1.Aleyn.wu(45198124)
好,我们继续第三个,00帮我找出第三个卡的比喻,我DEMO ing

2004-09-17 16:19:11 B1.斜阳(249208513)
啥啊,迷糊了!

2004-09-17 16:19:19 大羽(393921295)
如果数组,如果知道长度比你不知道用迭代效率要高不少

2004-09-17 16:19:31 大羽(393921295)
例如数组

2004-09-17 16:19:49 开心的武稀松(42088303)
对所以现在动态数组的出现大有取代指针作链表的趋势

2004-09-17 16:20:30 B1.斜阳(249208513)
对动态数组大小的重新分配是个很头痛的问题

2004-09-17 16:20:46 B1.斜阳(249208513)
并且,数组在进行插入操作的时候很耗时

2004-09-17 16:21:03 大羽(393921295)
getmem适合比较简单,重复少的操作

2004-09-17 16:21:06 开心的武稀松(42088303)
动态数组只是浪费内存,但是时间效率上臂指针作链表要快许多

2004-09-17 16:21:14 B1.斜阳(249208513)
链表和数组是各取所需,各有长短

2004-09-17 16:21:30 大羽(393921295)
也是农村卡的另一层涵义

2004-09-17 16:21:45 开心的武稀松(42088303)
动态数组,指针链表。一个时间效率高,一个空间效率高

2004-09-17 16:21:54 飘尘(43745429)
最主要是内存分块大小了,

2004-09-17 16:21:58 B1.斜阳(249208513)
那要看什么效率,如果说是在随机插入上,链表要比数组效率高许多

2004-09-17 16:22:00 飘尘(43745429)
操作系统上有了

2004-09-17 16:22:06 大羽(393921295)
总要付出代价

2004-09-17 16:22:24 大羽(393921295)
这要看需要了

2004-09-17 16:22:32 飘尘(43745429)
要是分块太大的话,或者太小

2004-09-17 16:22:38 开心的武稀松(42088303)
但是如果访问第几个元素的时候链表就慢得多

2004-09-17 16:23:47 开心的武稀松(42088303)
因为链表要一个一个走,直到走到你要的元素。而动态数组一条Mov指令就搞定了

2004-09-17 16:23:55 大羽(393921295)
内存分配比如堆栈 ,heap各有各的适用范围

2004-09-17 16:24:04 开心的武稀松(42088303)
说错了是Inc指令

2004-09-17 16:25:01 A1.Aleyn.wu(45198124)
请大家重新下载。
这次加入GlobalAlloc

2004-09-17 16:27:02 A1.Aleyn.wu(45198124)
这次看看,是不是两个都可以,不管有没有FreeLibrary都可以。
GlobalAlloc和GlobalFree是工行牡丹卡
走到哪都通用。

2004-09-17 16:29:04 00.天地弦/zhao(185511468)
A1是不是FreeLibrary后要手工调用GlobalFree
是吗?

2004-09-17 16:29:17 A1.Aleyn.wu(45198124)

2004-09-17 16:29:39 00.天地弦/zhao(185511468)
好,这个就像你做那个TSafeXXXObject一样

2004-09-17 16:29:48 00.天地弦/zhao(185511468)
是不

2004-09-17 16:29:57 A1.Aleyn.wu(45198124)
跟那个没什么关系吧?

2004-09-17 16:30:16 00.天地弦/zhao(185511468)
那个也要手工Free是吧

2004-09-17 16:30:30 A1.Aleyn.wu(45198124)
那个是对象。

2004-09-17 16:30:44 00.天地弦/zhao(185511468)
嗯,等下我再去补习

2004-09-17 16:32:30 B1.斜阳(249208513)
要说明什么问题呢

2004-09-17 16:32:44 A1.Aleyn.wu(45198124)
对了,忘了做小结了。[:D]

2004-09-17 16:32:46 00.天地弦/zhao(185511468)
今天要讲内存管理的那四张卡给大家听

2004-09-17 16:33:33 C03.MUSIC(281361369)
讲一下适用范围吧,农村卡知道了,其他没有讲吧

2004-09-17 16:35:09 A1.Aleyn.wu(45198124)
(1),GetMem和New是针对同一个Application来用的,因为,它们是使用同一个内存管理器,在不同的Application(不同的内存管理器),内存管理无效。除非内存管理器存在。

(2)。GlobalAlloc是API函数,和Delphi的内存管理器无关,所以,在不同的Application,可以有效。

2004-09-17 16:36:53 B1.斜阳(249208513)
对两个Application本身也不能互相访问对方分配的指针指向的内存啊

2004-09-17 16:37:20 A1.Aleyn.wu(45198124)
还有另外一个VirtualAlloc和VirtualFree,因为我用得少,所以只能请另一位大侠来讲解了。

2004-09-17 16:38:07 A1.Aleyn.wu(45198124)
两个application在这里是指(EXE和DLL)[:D]

2004-09-17 16:38:09 B1.斜阳(249208513)
不对,GlobalAlloc是在自己的进程地址空间中分配内存,对于别的进程是无效的啊

2004-09-17 16:38:44 B1.斜阳(249208513)
噢,早说啊,吓我一跳

2004-09-17 16:40:48 A1.Aleyn.wu(45198124)
现在,大家都应该知道这几张卡的大概用途了吧?

2004-09-17 16:41:09 HUI云中鹤(20695124)
VirtualAlloc和VirtualFree 这两个还没讲呢

2004-09-17 16:41:17 00.天地弦/zhao(185511468)
有点模糊

2004-09-17 16:41:37 HUI云中鹤(20695124)
现在有点概念了

2004-09-17 16:42:04 A1.Aleyn.wu(45198124)
如果是在同一个EXE里,那么,用哪一个都无所谓。不过GetMem倒是快了一点。

2004-09-17 16:42:20 00.天地弦/zhao(185511468)
我一般用new

2004-09-17 16:42:31 TCP/IP INFO(31329846)
GlobalAlloc 可不可以在不同进程间 共享呀

2004-09-17 16:42:36 李逸(57440981)
Delphi中有new吗

2004-09-17 16:42:44 00.天地弦/zhao(185511468)

2004-09-17 16:43:15 A1.Aleyn.wu(45198124)
如果在EXE和DLL中传,那么优先用GlobalAlloc

2004-09-17 16:43:27 00.天地弦/zhao(185511468)

2004-09-17 16:43:31 00.天地弦/zhao(185511468)
31329846(TCP/IP INFO) 16:42:31
GlobalAlloc 可不可以在不同进程间 共享呀 

2004-09-17 16:43:40 B1.斜阳(249208513)
不可以

2004-09-17 16:43:44 A1.Aleyn.wu(45198124)
没试用,不清楚。

2004-09-17 16:44:13 00.天地弦/zhao(185511468)
还有两个呢
AllocMem,ReallocMem。 

2004-09-17 16:44:32 A1.Aleyn.wu(45198124)
几个都好象不可以。

2004-09-17 16:44:43 00.天地弦/zhao(185511468)
武老大说说
还有AllocMem,ReallocMem。 

2004-09-17 16:44:47 A1.Aleyn.wu(45198124)
AllocMem,ReallocMem请武兄来讲讲。

2004-09-17 16:44:56 B1.斜阳(249208513)
不同的进程之间共享内存需要的是其它的机制

2004-09-17 16:45:17 00.天地弦/zhao(185511468)
深度历险里有

2004-09-17 16:45:19 开心的武稀松(42088303)
function AllocMem(Size: Cardinal): Pointer;
begin
  GetMem(Result, Size);
  FillChar(Result^, Size, 0);
end;

2004-09-17 16:45:34 开心的武稀松(42088303)
还用讲么,只不过是他把内存初始化为0

2004-09-17 16:46:10 李逸(57440981)
GlobalAlloc可以在不同的进程中间访问

2004-09-17 16:46:25 A1.Aleyn.wu(45198124)
等於开了户再帮你存钱而已。[:D]

2004-09-17 16:46:36 00.天地弦/zhao(185511468)
哦还有老吴刚刚GlobalAlloc里没有Free
要怎么Free

2004-09-17 16:46:39 李逸(57440981)
Global是全局的意思

2004-09-17 16:46:40 A1.Aleyn.wu(45198124)
请老狼讲课[share]

2004-09-17 16:46:53 李逸(57440981)
嗯??我只是谈谈自己的看法

2004-09-17 16:47:07 A1.Aleyn.wu(45198124)
你的看法就是我们的进步。

2004-09-17 16:47:08 TCP/IP INFO(31329846)
GlobalFree

2004-09-17 16:47:19 00.天地弦/zhao(185511468)
GlobalFree怎么用

2004-09-17 16:47:24 李逸(57440981)
嗨,这就成了瞎扯了

2004-09-17 16:47:40 A1.Aleyn.wu(45198124)
大家先说发话,先听A2讲课。

2004-09-17 16:48:07 00.天地弦/zhao(185511468)
应该是不行的,要不陈宽达也就不用那个幸苦了

2004-09-17 16:48:12 李逸(57440981)
我只是只道GlobalAlloc分配后的内存块是一个句柄,这个句柄呢在Windows中可是唯一的,这样的话,肯定可以和其它进程共享的

2004-09-17 16:48:27 A1.Aleyn.wu(45198124)
对,是句柄

2004-09-17 16:48:56 李逸(57440981)
锁定句柄就可以得到这块内存在自己进程中的指针地址

2004-09-17 16:49:16 TCP/IP INFO(31329846)
GlobalLock

2004-09-17 16:49:27 李逸(57440981)
不同的进程GlobalLock后得到不同的地址

2004-09-17 16:51:16 A1.Aleyn.wu(45198124)
这个可以试一试了。

2004-09-17 16:51:39 A1.Aleyn.wu(45198124)
我倒是没有想到这一点。[:D]

2004-09-17 16:51:54 00.天地弦/zhao(185511468)
老大你试试。

2004-09-17 16:52:12 00.天地弦/zhao(185511468)
试好了,共享一下,[:D]

2004-09-17 16:52:18 TCP/IP INFO(31329846)
GlobalAlloc
GlobalDiscard
GlobalFlags
GlobalFree
GlobalHandle
GlobalLock
GlobalMemoryStatus
GlobalReAlloc
GlobalSize
GlobalUnlock
Global 的东西很多呀
 

2004-09-17 16:53:02 00.天地弦/zhao(185511468)
to TCP/IP INFO
GlobalFree在Exe怎么释放pp

2004-09-17 16:53:52 00.天地弦/zhao(185511468)
var
  pp: pchar;
  Lib: THandle;
  TestGlobalAlloc: TTestGlobalAlloc;
begin
  Lib := LoadLibrary('TestDLL.dll');
  TestGlobalAlloc := GetProcAddress(Lib, 'TestGlobalAlloc');
  pp := TestGlobalAlloc;
  FreeLibrary(Lib);
  Edit1.Text := pp;

2004-09-17 16:54:50 TCP/IP INFO(31329846)
HGLOBAL GlobalFree(

    HGLOBAL hMem  // handle to the global memory object
   );
GlobalFree 要的是 HGLOBAL 类型

2004-09-17 16:55:20 00.天地弦/zhao(185511468)
那在Exe里怎么释放

2004-09-17 16:56:01 TCP/IP INFO(31329846)
HGLOBAL,没从 dll 中传出来呀,可能得转一下

2004-09-17 16:56:25 00.天地弦/zhao(185511468)

2004-09-17 16:56:58 00.天地弦/zhao(185511468)
HGLOBAL在DLL里哪个可以得到

2004-09-17 16:57:14 00.天地弦/zhao(185511468)
GlobalAlloc(GHND, 1024)这个返回一个HGLOBAL

2004-09-17 16:57:19 00.天地弦/zhao(185511468)
是吗?

2004-09-17 16:57:22 TCP/IP INFO(31329846)

2004-09-17 16:57:25 A1.Aleyn.wu(45198124)
老狼,我试了几次,都不可以,为什么呢?

2004-09-17 16:57:34 TCP/IP INFO(31329846)
看看 Win32 API 呀

2004-09-17 16:58:03 李逸(57440981)
你要是能够得到正确的Handle就可以相互共享

2004-09-17 16:58:06 00.天地弦/zhao(185511468)
嗯,我很少看

2004-09-17 16:58:40 A1.Aleyn.wu(45198124)
Handle是正确的。

2004-09-17 16:58:46 TCP/IP INFO(31329846)
共享是不是得 要 HGLOBAL 值呀,不要 GlobalLock

2004-09-17 16:59:09 A1.Aleyn.wu(45198124)
第一个:
  TT:=GlobalAlloc(GHND,100);
  PP:=GlobalLock(TT);
  PP:='TestGlobalAlloc';
  edit1.Text:=pp;
  edit2.Text:=inttostr(Cardinal(TT));
  GlobalUnLock(TT);

2004-09-17 16:59:12 李逸(57440981)
我在书中那个Drowing的例子,剪切板就是使用Handle传递的

2004-09-17 16:59:19 A1.Aleyn.wu(45198124)
第二个:
  TT:=Cardinal(strtoint(edit2.Text));
  PP:=GlobalLock(TT);
  edit1.Text:=pp;
  GlobalUnLock(TT);


2004-09-17 17:01:40 00.天地弦/zhao(185511468)
陈宽达说C++里不同进程间共享内存很简单。在Delphi里实现就麻烦了

2004-09-17 17:02:45 B1.斜阳(249208513)
刚刚看了一下GlobalAlloc的帮助,说这个函数是从Windows堆中分配所需要的内存

2004-09-17 17:02:57 A1.Aleyn.wu(45198124)
对。

2004-09-17 17:03:12 00.天地弦/zhao(185511468)
晕我的Help里没有GlobalAlloc这个

2004-09-17 17:04:28 B1.斜阳(249208513)
如果用默认参数调用GlobalAlloc函数,需要使用
GlobalLock来获得在本进程中对应的内存指针

2004-09-17 17:04:36 A1.Aleyn.wu(45198124)
看来得找个时间好好试验一下。看一下能不能突破限制。

2004-09-17 17:04:43 A1.Aleyn.wu(45198124)
对。

2004-09-17 17:05:07 嘉嘉!(13820956)
185511468(00.天地弦[find]) 17:03:12
晕我的Help里没有GlobalAlloc这个

你到MSDN里查!那是WIN API!

2004-09-17 17:05:12 B1.斜阳(249208513)
使用完成后,要先用GlobalUnlock然后再释放

2004-09-17 17:05:21 A1.Aleyn.wu(45198124)
对。

2004-09-17 17:06:08 A1.Aleyn.wu(45198124)
Delphi帮助里有一个Windows SDK的帮助就是了。

2004-09-17 17:06:16 李逸(57440981)
对啊

2004-09-17 17:07:11 TCP/IP INFO(31329846)
在 Delphi 中,写 GlobalAlloc ,按F1就有了

2004-09-17 17:07:17 B1.斜阳(249208513)
对GlobalLock函数的帮助上说是对指定的那个句柄的锁定技术值加1

2004-09-17 17:08:57 A1.Aleyn.wu(45198124)
晕,不同进程,GlobalSize查出来的东西是0

2004-09-17 17:09:12 李逸(57440981)
呵呵,厉害

2004-09-17 17:09:20 A1.Aleyn.wu(45198124)
也就是说,不同进程,GlobalAlloc可能无效。

2004-09-17 17:09:57 B1.斜阳(249208513)
从这几个函数的帮助上看,在使用GlobalAlloc分配内存时,通过第一个参数,可以分配一个多个例程都可以访问到的内存

2004-09-17 17:10:08 00.天地弦/zhao(185511468)
老大你怎么试的

2004-09-17 17:12:50 开心的武稀松(42088303)
可以把我们的讨论整理一下,以技术讨论的形式出版一本书

2004-09-17 17:13:19 A1.Aleyn.wu(45198124)
00做好今天的笔记,明天出版。

2004-09-17 17:13:20 00.天地弦/zhao(185511468)
我还想请大家出书呢

2004-09-17 17:13:28 00.天地弦/zhao(185511468)
OK

2004-09-17 17:14:04 李逸(57440981)
不会的吧,比如一个Handle通过GlobalAlloc分配的,比方是0x00001200,你甚至可以在另一个程序中输入这个数值作为handle的值,然后GlobalLock之,结果是一样的

2004-09-17 17:15:11 开心的武稀松(42088303)
我们出版电子书

2004-09-17 17:15:34 00.天地弦/zhao(185511468)
呵呵,那个可以赚钱吗?

2004-09-17 17:16:00 A1.Aleyn.wu(45198124)
to A2,我正是这样试的。

2004-09-17 17:16:03 开心的武稀松(42088303)
干吗赚钱?要是想赚钱A1老大能免费给大家讲么

2004-09-17 17:16:24 开心的武稀松(42088303)
大家向A1学习

2004-09-17 17:16:38 00.天地弦/zhao(185511468)
呵呵,是的,不过那种还要好一点哦

2004-09-17 17:18:21 A1.Aleyn.wu(45198124)
事件有进展了,但数据还是错的。

2004-09-17 17:18:38 李逸(57440981)
什么进展呢

2004-09-17 17:18:56 李逸(57440981)
你先用一个String之类的明文数据试试看啊

2004-09-17 17:19:16 A1.Aleyn.wu(45198124)
对啊,我是用你的方法来试的。

2004-09-17 17:19:28 李逸(57440981)
反正我的Drowing剪切板就是通过剪切板传递一个Handle的

2004-09-17 17:19:50 李逸(57440981)
书上是有代码的,我也不需要试验的

2004-09-17 17:19:57 A1.Aleyn.wu(45198124)
和GlobalAlloc第一个参数有关,正在试中。

2004-09-17 17:20:34 TCP/IP INFO(31329846)
随着进程的分离内存空间的出现,进程不能简单地使用GlobalAlloc()函数来分配内存,并把它转递给另一个进程来共享,一个进程检查有另一个进程分配的指针,他只是指向随机地址。然而,在32位的Windows系统支持在进程间共享内存映象文件,可以通过内存映象文件来达到内存共享的目的。

2004-09-17 17:20:49 李逸(57440981)
第一个参数是什么呢SHARE类型的?

2004-09-17 17:21:00 A1.Aleyn.wu(45198124)
都试过。 

2004-09-17 17:21:18 A1.Aleyn.wu(45198124)
GHND,GPRT,GMEM_SHARE都试了。

2004-09-17 17:21:27 李逸(57440981)
哦,要不要我将代码给你试试看呢

2004-09-17 17:21:31 TCP/IP INFO(31329846)
GlobalAlloc() 是不行得

2004-09-17 17:21:59 A1.Aleyn.wu(45198124)
对,TCP/IP INFO说的我好象之前有看过。

2004-09-17 17:22:38 A1.Aleyn.wu(45198124)
A2,代码长不长?

2004-09-17 17:22:52 李逸(57440981)
那个程序当然不长

2004-09-17 17:22:57 李逸(57440981)
例子麻

2004-09-17 17:23:11 A1.Aleyn.wu(45198124)
[:D]发来看看。

2004-09-17 17:23:12 TCP/IP INFO(31329846)
http://www.joinwingroup.com/myclub/cgi-bin/topic.cgi?forum=1&topic=20&replynum=last#bottom
这里有

2004-09-17 17:23:14 00.天地弦/zhao(185511468)
老大我要早退了,下班了

2004-09-17 17:24:11 B1.斜阳(249208513)
我正在测试

2004-09-17 17:24:47 开心的武稀松(42088303)
A1为何不发动大家我们做一个开源的项目呢。

2004-09-17 17:25:18 D3天之痕若虹(86278566)
呵呵,时机还没到呢

2004-09-17 17:25:46 A1.Aleyn.wu(45198124)
我已经发动了,只是力量不够,时间也有限。。。[:~]

2004-09-17 17:26:03 A1.Aleyn.wu(45198124)
EDS队建立正是这个目的。

2004-09-17 17:26:16 开心的武稀松(42088303)
对啊,我也感觉时间有限

2004-09-17 17:27:14 开心的武稀松(42088303)
中国程序员要为户口而忙活,所以这种开源的项目成功得不多。因为大家都时间去搞


2004-09-17 17:28:28 李逸(57440981)
Handle = GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE,  //重新分配全局内存
         sizeof(TDataToSave) * Src->Selection->Count +
         sizeof(TFileHeader));              //按照图形数量和标记头
DataPoint = (char*)GlobalLock(Handle);      //所需要的大小分配
Header = (TFileHeader*)DataPoint;           //锁定内存并转化为标记头
Header->DrawCount = Src->Selection->Count;  //用于记录拷贝图形的数量
//.....数据保存
GlobalUnlock(DataPoint)

2004-09-17 17:28:31 李逸(57440981)
SetAsHandle(Form2->ClipBoardFormat,(int)Handle);

2004-09-17 17:28:58 李逸(57440981)
这是将数据复制到分配的内存块中,然后交给剪切板

2004-09-17 17:29:53 李逸(57440981)
    Handle = (void*)GetAsHandle(Form2->ClipBoardFormat);
    if( !Handle )                               //数据格式的句柄
    {                                           //为空表示没有相应格式的
       Close();                                 //数据,关闭剪贴板并返回
       return;
    }
    DataPoint = (char*)GlobalLock(Handle);      //锁定内存为指针
    if(!DataPoint)                              //若锁定后指针无效

2004-09-17 17:30:05 李逸(57440981)
    {                                           //说明拷贝的数据块
       GlobalUnlock(DataPoint);                 //无效,释放指针、
       Close();                                 //关闭剪贴板并返回
       return;
    }
    Header = (TFileHeader*)DataPoint;           //读取标记头
    if(Header->DrawCount == 0)                  //若复制的图形数量
    {                                           //为0,表示数据无效
       GlobalUnlock

2004-09-17 17:30:40 李逸(57440981)
这是其它进程或者本进程根据剪切板的内容读取数据的代码

2004-09-17 17:30:43 李逸(57440981)
部分代码

2004-09-17 17:31:28 A1.Aleyn.wu(45198124)
可能C和D的管理方式不同,加了GMEM_MOVEABLE就更不行了。

2004-09-17 17:31:37 李逸(57440981)
不可能吧

2004-09-17 17:31:48 李逸(57440981)
这个是API的函数,不是Delphi 的吧

2004-09-17 17:31:51 A1.Aleyn.wu(45198124)
刚刚试了。[:D]

2004-09-17 17:32:07 李逸(57440981)
我要先走了,不管了,房子正在装修呢

2004-09-17 17:32:27 A1.Aleyn.wu(45198124)
慢走,[bye]

2004-09-17 17:37:12 B1.斜阳(249208513)
呵呵,失败告终!

2004-09-17 17:38:38 A1.Aleyn.wu(45198124)
B1你又是怎么试的?

2004-09-17 17:39:32 B1.斜阳(249208513)
在一个进程中分配一块内存,然后用这个句柄在另一个进程中锁定这个句柄,得到的始终是个nil

2004-09-17 17:39:57 A1.Aleyn.wu(45198124)
对,我也是这样。

2004-09-17 17:42:54 肖宇(236309574)
请问各位有无写需求分析的资料?

2004-09-17 17:43:23 A1.Aleyn.wu(45198124)
今天的会议到些结束,下次会议再继续。

2004-09-17 17:43:49 A1.Aleyn.wu(45198124)
今天的内容明天应该可以看得到了。

2004-09-17 17:44:16 B1.斜阳(249208513)
还是参数不对劲,一定是可以的

2004-09-17 17:44:33 A1.Aleyn.wu(45198124)
我试了几个参数,都不行。

2004-09-17 17:44:52 B1.斜阳(249208513)
不过共享内存还有其它的办法

2004-09-17 17:45:23 A1.Aleyn.wu(45198124)
共享内存就不是今天讨论的内容了。[:D]

2004-09-17 17:48:46 B1.斜阳(249208513)
如果对内存的运作了如指掌了,那还有什么不能作的呢[:D]

2004-09-17 17:49:40 飘尘(43745429)
共享内存讲一讲
 

2004-09-17 17:49:52 飘尘(43745429)
斜阳讲一讲了

2004-09-17 17:50:14 飘尘(43745429)
怎么样操作其它程序的内存区

2004-09-17 17:51:09 B1.斜阳(249208513)
这个我了解的也不是多,大约是可以通过Dll中的构造或者区域对象吧

2004-09-17 17:51:33 飘尘(43745429)
谁会呀
 
2004-09-17 17:52:17 飘尘(43745429)
武松出来讲

2004-09-17 17:52:18 B1.斜阳(249208513)
你看看 参透Delphi这本书的最后,那上面讲了一种方法

2004-09-17 17:58:23 A1.Aleyn.wu(45198124)
下班了[go],明天见[bye]。

目录
相关文章
|
4月前
|
存储 消息中间件 缓存
读Flink源码谈设计:有效管理内存之道
在最初接触到Flink时,是来自于业界里一些头部玩家的分享——大家会用其来处理海量数据。在这种场景下,`如何避免JVM GC带来StopTheWorld带来的副作用`这样的问题一直盘绕在我心头。直到用了Flink以后,阅读了相关的源码(以1.14.0为基准),终于有了一些答案。在这篇文章里也是会分享给大家。
541 1
|
6月前
|
程序员 C语言 C++
动态内存管理函数的使用与优化技巧(内存函数、柔性数组)(下)
动态内存管理函数的使用与优化技巧(内存函数、柔性数组)(下)
24 0
|
6月前
|
程序员 编译器 C语言
动态内存管理函数的使用与优化技巧(内存函数、柔性数组)(上)
动态内存管理函数的使用与优化技巧(内存函数、柔性数组)(上)
32 0
|
11月前
win10桌面窗口管理器进程内存占用大解决方法
win10桌面窗口管理器进程内存占用大解决方法
587 0
|
16天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 &gt; /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0
|
1月前
|
存储 算法 Java
如何使用 Python 管理内存和避免内存泄漏?
如何使用 Python 管理内存和避免内存泄漏?
100 35
|
3月前
|
Dragonfly 算法 安全
RT-Thread快速入门-动态内存堆管理方法
RT-Thread快速入门-动态内存堆管理方法
30 0
|
5月前
|
存储 算法
内存的管理(2)
内存的管理
25 0
|
5月前
|
调度
内存的管理(1)
内存的管理
27 0
|
6月前
|
编译器 Linux C语言
使用new/delete动态管理内存【C/C++内存分布】
使用new/delete动态管理内存【C/C++内存分布】
40 0

热门文章

最新文章