[C++对象模型][3]指针与数组

 

数组可以看做为一种类型,与指针不同,但是可以相互转化。

 

一 C指针操作函数

new和delete对C++的程序员也许很熟悉,但是malloc和free被用来在C代码中用来内存分配和释放,很多C++开发者并不能游刃有余的使用,下面实例解析malloc和free的使用。

       malloc void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
       free void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

 

实例如下:

 

Code
#pragma once
#include 
<string>

void TestMallocAndFree()
{
    
char *ptr = NULL;
    ptr 
= (char*)malloc(100 * sizeof(char));
    
if (NULL == ptr)
    {
        
return;
    }
    memcpy(ptr,
"Hello!",strlen("Hello!"));
    free(ptr);
    ptr 
= NULL;

     typedef 
struct data_type 
     {
       
int age;
       
char *name;
     } data;
 
     data 
*willy = NULL;
     willy 
= (data*) malloc( sizeof(data) );
     willy
->age = 20;
     willy
->name = "jason"// 此时的name指向了常量区,所以name指针不需要程序员释放。
     free( willy );
     willy 
= NULL;
}

 

malloc/free 和new/delete的区别:

1)new/delete是保留字,不需要头文件支持. malloc/free需要头文件库函数支持. 使用malloc/free需要包含 #include<cstdlib> 或<stdlib>.

2) new 建立的是一个对象,new会根据对象计算大小,直接返回对象的指针,当使用完毕后调用delete来释放,但malloc分配的是一块内存,需要用户制定所要分配内存的大小,而且返回的均为void的指针,使用时需要相应的强制类型转

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值