c - 在第二个函数内释放 C 中动态分配的数组
问题描述
我的问题是关于在不同功能中释放分配的内存。所以我的代码结构如下:
int main()
{
// Declare variables
double *val1, *val2;
// Call function 1
function1(&val);
// Call function 2
function2(&val2);
// Do some stuff .....
// Free dynamically allocated memory
free(val1);
free(val2);
// End program
return 0;
}
void function1(double *val1)
{
/* Allocate memory */
val1 = (double*) malloc(n1*sizeof(double));
if (val1 == NULL){
printf("Error: Memory not allocated!");
exit(0);
}
}
void function2(double *val2)
{
// Allocate memory
val2 = (double*) malloc(n2*sizeof(double));
if (val2== NULL){
printf("Error: Memory not allocated!");
// Here I want to free val1!
exit(0);
}
}
这意味着为 function1 内部的 val1 和 function2 内部的 val2 分配了一些内存。
现在,函数 2 中不需要 val1 中包含的内容,所以我乍一看不必将指针传递给 val1。
但是,如果 val2 没有正确分配,我想退出程序,但首先释放所有分配的内存。我可以在 function2 中释放 val1 的内存而不传递 val1 的指针吗?
解决方案
使用动态分配构造函数的一种方法是返回整数的值,例如:int function1(double *val)
如果失败,您可以返回一个值,该值将在分配失败时指示它,并在main()
推荐阅读
- java - Spring Cloud Zuul - 哪些连接参数何时起作用?
- python - Tensorflow tf.keras.layers.Reshape RNN/LSTM
- jira-plugin - 如何获得“ACCESS_EMAIL_ADDRESSES”范围以在 jira 上开发应用程序
- ios - 无法使用 Kingfisher 显示来自 url 的图像
- javascript - 如何解决无法读取null属性addEventListener的问题
- python - 您可以在 Seaborn 点图中缩放单个色调变量吗?
- python-3.x - 更改 pandas to_sql 函数中的默认 NULL 值
- apache-spark - Spark中如何创建分区
- java - 如何在 Gitlab CI 上实现 Docker 虫洞模式
- javascript - 从 React.js 频道获取所有 youtube 视频