函数内部数组的动态分配
Dynamic Allocation of Array Inside of a Function
我正在尝试 malloc 并初始化一个数组,并通过传入的指针将其返回给调用函数。(g++)
前任:
float* buff;
allocateBuff(&buff);
buff[0] = 2.3;
free(buff);
int allocateBuff(float** buffer)
{
*buffer = (float*) malloc(sizeof(float)*1);
return 0;
}
但是,这个赛格错误。
您的function return
必须与您希望返回的指针类型匹配。如果要分配一个 float
数组,则函数的类型必须是 float *
。下面是一个快速示例:
#include <stdio.h>
#include <stdlib.h>
float *allocateBuff(float** buffer, int size)
{
/* allocate array of floats */
*buffer = calloc(size, sizeof(*buffer));
return *buffer;
}
int main() {
float *array = NULL;
array = allocateBuff (&array, 10);
int i;
for (i = 0 ; i < 10; i++)
array[i] = (float)i;
for (i = 0 ; i < 10; i++)
printf ("array [%d] : %fn", i, array[i]);
if (array) free (array);
return 0;
}
输出:
$ ./bin/initfloat
array [0] : 0.000000
array [1] : 1.000000
array [2] : 2.000000
array [3] : 3.000000
array [4] : 4.000000
array [5] : 5.000000
array [6] : 6.000000
array [7] : 7.000000
array [8] : 8.000000
array [9] : 9.000000
此外,根本不需要将buffer
传递给函数。您可以像以下那样轻松地定义函数:
float *allocateBuff (int size)
{
/* allocate array of floats */
float *buffer = calloc (size, sizeof(*buffer));
return buffer;
}
然后使用以下命令在代码中初始化数组:
float *array = NULL;
array = allocateBuff (10);
好的,上面的代码确实有效,它在其他地方出错了。感谢您的所有回复。
尝试这样的事情:
int allocate(float **buffer)
{
*buffer = new float(2.3f);
return 0;
}
int allocateAsArray(float **buffer, unsigned size)
{
*buffer = new float[size];
return 0;
}
int main()
{
float* buff = nullptr;
// some operations ...
delete buff;
// or delete[] buff;
return 0;
}
但是在C++中使用 C 型指针并不是一个好主意(我们更喜欢智能指针/STL 数组以提高安全性)。
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 动态更改数组的大小并读取值.(无矢量)
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 动态维度数组的 C++ 别名指针
- C++ 在析构函数调用之前删除的动态成员数组
- 从类 c++ 动态创建数组
- 具有静态 std::array 的神经网络比使用动态 C 数组的神经网络慢
- "Error reading character of string" 为哈希动态增长数组的问题 (C++)
- 为什么我们在传递动态 2D 数组时不需要列数?
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 使用动态布尔数组时出现问题
- C++ 在类中删除动态 2D 数组时不断"Aborted (core dumped)"
- 如何在C 中动态输入数组
- 关于删除动态对象数组
- 在C 中动态更改数组大小
- 使用动态指针数组进行动态对象分配 - 使用什么删除?
- 动态字符串数组分配错误
- 函数中的动态 2D 数组分配并将其返回给主数组
- c++动态字符串数组分配
- 使用字符串或字符动态分配(数组)