DELPHI,问一个声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?

[复制链接]
查看11 | 回复3 | 2012-11-23 08:52:01 | 显示全部楼层 |阅读模式
无论是全局,还是局部的,只需要你深入理解指针和常量就行了。1、'12345'是个字符串常量,在内存中有自己的位置。p:='12345'的意思是字符指针p中保存的是这个常量的地址(也可以称作p指向了字符串常量'12345'),所以,不牵涉到内存的分配。2、var p:PChar;表示你定义了一个指针,这个指针可以保存一个地址,这个指针的(操作)行为是按(操作)字符行为来操作的。所以,当p:='12345';时,p^表示字符'1',(p+1)^表示字符'2',......这是字符指针的实际意义。3、对于指针不指向一个常量时,比如你自己想要开辟一块内存,用来保存自己的信息,就需要内存分配和释放了。4、在Delphi中,除了必须用到指针的地方外...
回复

使用道具 举报

千问 | 2012-11-23 08:52:01 | 显示全部楼层
Delphi、PChar和Char数组的比较string和Char数组都是一块内存, 其中存放连续的字符. string保存具体字符的内存对用户是透明的, 由Delphi管理它的分配, 复制和释放, 用户不能干预(其实也可以, 不过是通过 非法途径). Char数组就不必说了吧? PChar是一个指针, 它的大小只有32位. 定义时由Delphi...
回复

使用道具 举报

千问 | 2012-11-23 08:52:01 | 显示全部楼层
首先,所有的变量,都存在内存中。 1.全局变量“不需要”分配内存,在你的进程被创建时,它们就在内存里,是“操作系统帮你分配了”。2. 局部变量“需要”分配内存,局部变量刚开始是“不存在内存中”的。只有你的函数或过程被执行到时,才在堆栈上“分配”,这个“分配”,只是用椎栈来做局部变量用。而堆栈是在线程创建时,就被分配的空间。3.使用GetM...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行