内存分配

C++内存分配函数

   #define MAXINT 100;
    typedef struct Node{
          ElemType Data;
          int Weigth;
    } TestNode;
    TestNode* testNode = (TestNode*)malloc(MAXINT, sizeof(TestNode));//需要判断分配是否成功,testNode==null则分配失败,下同
    testNode = (TestNode*)realloc(MAXINT * 2, sizeof(TestNode));

大家可以看到,目前C语言主要有两种内存分配方式,一种是直接分配,一种是叠加分配

分配方式分配函数分配原理及注意事项
直接分配malloc()动态内存分配中的首次适应算法或者邻近适应算法
叠加分配realloc()动态内存分配: 1。当前分配的内存+邻近区域的内存足够,直接分配,2. 如果当前分配的内存+邻近区域的内存不够,重新分配
struct flowRecord            
{  
    string app_name;                                                              
    struct flowRecord *next;
};  
      
int main() {  
    flowRecord *fr = (flowRecord*)malloc(sizeof(flowRecord));  
    fr->app_name = "hello";  
    cout << fr->app_name << endl;  
    return 0;  
}

注意事项:

new和malloc都是在堆上分配空间。new在分配内存时会调用默认的构造函数,而malloc不会调用.而结构体flowRecord中有string对象,所以使用malloc不会调用默认构造函数,这会导致不会分配空间给app_name.因而在调用fr->app_name会造成段错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值