Creo二次开发--内存分配

内存导致软件崩溃

有朋友问我在实际的开发过程中,经常碰到莫名其妙的软件崩溃,经过测试发现,是内存分配的错误导致软件崩溃。这次就简单介绍一下Toolkit中的内存分配。



C++中的内存分配

动态内存分配是在使用访问函数以及其他一些函数时经常会用到的,它主要是用来获得一组数据对象。为什么要使用动态内存分配呢?举个例子,当要获得模型所有的特征或者制定类型的特征时,事先并不知道有多少个这样的特征,所以不能事先分配好一个存储容量,而应该在程序中根据实际的数量来分配。

    C++中使用new关键字来操作动态内存分配,使用delete 语句来释放分配的内存。delete只能释放由new方法生成的动态内存空间,否则程序会产生运行期间错误,这种错误常常会导致程序立刻关闭。

 创建对象:

    int *p = new int(1024);//创建一个整形指针,用1024初始化

    int *pi = new int[1024];//创建一个容量为1024个的数组,首地址赋予pi

 删除对象:

    delete p;//删除

    delete pi;//删除

 但是在Toolkit中是通过不同的函数来进行内存分配和内存回收的。

Pro/Toolkit中的数组

 在Toolkit中通过ProArray来进行定义一个无类型的指针对象,可以存放任何对象。

 #include <ProToolkit.h>

 typedef void* ProArray;

TOOLKIT如何分配内存

对该数组进行空间的分配使用ProArrayAlloc函数,在TOOLKIT中的定义为:

ProError ProArrayAlloc(

  int n_objs,

  intobj_size,

  intreallocation_size,

  ProArray*p_array);

n_objs:数组的初始大小。一般传0即可。

obj_size:数组元素的大小(单位为字节),一般传(sizeof(元素类型)获取的大小)。比如数组存放的元素类型为int,传sizeof(int)即可。sizeof操作符会计算出类型占用的字节数。

reallocation_size:当数组空间大小发生变化时,每次递增或递减的大小。如果你没有深入理解ProArray的内存实现,一般可以传5这个经验值。

p_array:数组变量的地址。

使用完成后通过ProArrayFree()函数进行释放内存信息;

在Toolkit中的定义为:

#include <ProArray.h> 

ProError ProArrayFree ( 

 ProArray* p_array //输入需要进行释放内存的数组对象

)

常用函数

1、向数组增加元素

ProError ProArrayObjectAdd(

  ProArray*p_array,

    int       index,

    int       n_objects,

   void*     p_object);

p_array:数组的地址。

index:在何处添加元素,一般传-1,表明在数组最后添加元素。

n_objects:添加元素的数量。

p_object:要添加元素的地址。

ProArrayObjectAdd( (ProArray*)&names,-1,1,&path1);

2、获取数组的成员个数

ProError  ProArraySizeGet(

  ProArrayarray,

    int*  p_size);

array:数组。

p_size:接收数组大小变量的地址。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值