delphi pchar 指针错误


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24


var

P: Pchar; //P 是指针

CSize: Cardinal;

begin

CSize := MAX_COMPUTERNAME_LENGTH + 1;

GetMem(P, CSIze);//在这里你给 P 分配了一块内存。

P := ‘4321‘; //这里你将 P 指向另一处含有常量 ‘4321‘ 的内存。此时先前给 P 分配的内存

//已经成了“孤岛”,就是通常所说的“内存泄漏”。

ShowMessage(P);

FreeMem(P); //常量 ‘4321‘ 的内存是由系统自动管理的,不允许人工释放。

end;

//下面代码正常:

var

P: Pchar; //P 是指针

CSize: Cardinal;

begin

CSize := MAX_COMPUTERNAME_LENGTH + 1;

GetMem(P, CSIze);//在这里你给 P 分配了一块内存。

strcopy(P,‘4321‘); //将常量 ‘4321‘ 复制到先前给 P 分配的内存里。

ShowMessage(P);

FreeMem(P); //释放给 P 分配的内存。

end;

时间: 2024-10-10 10:55:48

delphi pchar 指针错误的相关文章

Delphi的指针(有图,很清楚)

Pointers are like jumps, leading wildly from one part of the data structure to another. Their introduction into high-level languages has been a step backwards from which we may never recover. — Anthony Hoare 对指针可能有最让人误解和惧怕的数据类型,因此很多程序员喜欢躲避他们. 但是指针很重要

野指针错误实例

野指针,也就是指向不可用内存区域的指针.通常对这种指针进行操作的话,将会使程序发生不可预知的错误. 这是野指针的定义,但很多C语言新手对它还是很陌生,下面我就简单举一个例子来看一看.在VC6.0中输入以下代码: #include <malloc.h> #include <stdio.h> void main() { char *p; //...可能有别的很多操作 if(p != NULL) { free(p); } else { p = (char *)malloc(4); } /

delphi中指针操作符^的使用

To see how pointers work, look at the following example.1    var2      X, Y: Integer;   // X and Y are Integer variables3      P: ^Integer;     // P points to an Integer4    begin5      X := 17;         // assign a value to X6      P := @X;         /

ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态

错误原因: exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后.再去通过该对象去调用其它的方法就会出现野指针错误. 例如: Person *jerry = [[Person alloc]init];  //  retainCount引用计数为1 [jerry eat];  //  调用吃的方法 [jerry release];  //  释放jerry这个对象到 retain

exc_bad_access(code=1, address=0x789870)野指针错误

原因: exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后.再去通过该对象去调用其它的方法就会出现野指针错误. 解决办法: 首先得定位到哪里出现的这样野指针引用错误,如果是大型的项目代码量一大,找起来是非常痛苦的. iOS提供了一个环境变量设置来帮忙定位错误位置的信息描述:NSZombieEnabled ,就是当设置NSZombieEnabled环境变量后,一个对象销毁时会被

Delphi 运行后错误提示“无效的授权说明”

Delphi 运行后错误提示“无效的授权说明” 一般情况是:数据库的连接出现了问题. 解决方法:检查加载数据库是否正常,能否正常连接. 原文地址:https://www.cnblogs.com/guorongtao/p/11994507.html

Delphi函数指针的使用(转)

delphi中可以通过函数指针把一个函数作为参数来传递,然后在另外一个函数中调用. 1) 首先,申明函数指针类型TFunctionParameter. type          TFunctionParameter = function(const value : integer) : string; 2) 定义准备被作为参数传递的函数 function One(const value : integer) : string;         begin            result :

Delphi Access Violation错误的分析

转自:http://www.cnblogs.com/delphi7456/archive/2010/11/13/1876180.htmlDelphi Access Violation错误的分析 Delphi常见的运行期Access Violation错误有哪些?如何防止? 任何软件开发都会遇到这样的情况:你写好程序并测试,然后到处发送,结果用户告诉你它失败了. 你可能考虑用编译指令{$D}编译你的程序——Delphi可以建立一个有助于定位Access Violation错误的源代码的镜像文件.工

Delphi的指针为什么可以多次New

今天在使用Delphi的队列的时候,需要在每次将一个record压入队列的时候对该record进行New操作(分配内存空间),然后将该指针压入到队列,大概 的代码如下 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OrderList, Contnrs{虽然本单元中引入了OrderList,而OrderL