如何在函数中动态分配内存?

里昂

假设我想动态分配内存,但要使用一个函数而不是main()函数。

所以我尝试这样做:

dynamAlloc(int *fPtr)
{
   fPtr=malloc(cols * sizeof(*fPtr) );
   if(fPtr==NULL)
    { 
      printf("Can't allocate memory");
      exit(1);
    }
}

然后我意识到:即使在堆上分配的内存在程序的整个生命周期内都是可用的,但该内存只能由形式参数引用,fPtr而不能由实际参数引用(我们称之为aPtr)。但是一旦退出功能,该内存就会丢失。

那么,如何使用函数动态分配内存呢?

RobertS支持Monica Cellio

该内存只能由形式参数引用,fPtr而不能由实际参数引用(我们称之为aPtr)。

aPtr无法在调用之前表示堆内存对象dynamAlloc()因为该对象尚未分配,并且其地址分配给aPtrtrough fPtr此后,aPtr 引用堆对象。

我们只需要传递的指针的地址aPtrdynamAlloc()因此,您需要适当的参数(实际参数)和参数(形式参数)以aPtr在函数之间传递指针的地址,如下所示。

那么,如何使用函数动态分配内存呢?

您可以像执行此操作那样操作main(),无论指针是在main()函数内部声明还是在另一个函数中都没关系,您只需要将指针的地址传递aPtr给要在其中使用堆内存对象的其他函数,例如fe:

#include <stdio.h>
#include <stdlib.h>

#define cols 5

void dynamAlloc(int** fPtr);

int main()
{
    int* aPtr;

    dynamAlloc(&aPtr);

    free(aPtr);

    return 0;
}


void dynamAlloc(int** fPtr)                 
{
   *fPtr = malloc(sizeof(*fPtr) * cols);
   if(*fPtr == NULL)
    { 
      printf("Can't allocate memory");
      exit(1);
    }
}

不要忘free()了堆内存!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中的函数内动态分配函数中的内存

来自分类Dev

如何将指针传递给函数并在函数C ++中动态分配内存

来自分类Dev

在本地函数中动态分配和释放内存

来自分类Dev

如何在我指向的地址上动态分配内存?

来自分类Dev

如何在Visual Studio 2012 Visual C ++中动态分配内存

来自分类Dev

如何在C ++中为char数组动态分配内存?

来自分类Dev

如何在Visual Studio 2012 Visual C ++中动态分配内存

来自分类Dev

如何在C中为字符串数组动态分配内存?

来自分类Dev

动态分配的内存构造函数

来自分类Dev

如何避免动态分配的小部件中的内存泄漏

来自分类Dev

释放C中动态分配的内存

来自分类Dev

在QT中释放动态分配的内存

来自分类Dev

在C中动态分配内存

来自分类Dev

如何在类构造函数中初始化动态分配的数组

来自分类Dev

如何在AngularJS中动态分配过滤器

来自分类Dev

如何在C ++中访问动态分配的矩阵?

来自分类Dev

如何在Django集合中动态分配别名?

来自分类Dev

如何在C中动态分配静态存储?

来自分类Dev

如何在React中动态分配属性?

来自分类Dev

如何在C ++中引用动态分配的字符数组

来自分类Dev

在pascal中动态分配匿名函数

来自分类Dev

QList clear函数调用是否清除存储在QList中的动态分配对象的内存?

来自分类Dev

如何动态计算动态分配的内存的大小

来自分类Dev

释放动态分配的内存

来自分类Dev

释放动态分配的内存

来自分类Dev

删除动态分配的内存

来自分类Dev

如何在C ++中删除由动态分配的数组成员组成的动态分配的结构?

来自分类Dev

在C ++中为联合中的数组动态分配内存

来自分类Dev

如何正确管理动态分配对象的内存?

Related 相关文章

热门标签

归档