如何保存返回的float数组指针?

时间:2012-08-25 07:19:13

标签: c++ c

我通过接口有一个cpp功能 float* decode()返回指向静态向量的原始数据的指针。

现在我的c代码中有一个

float *value0;
value0 = (float*) malloc(M* sizeof(float) );

现在我做的时候

value0 = work_decode1(h0, code0, 7, retain0);

当我在visual studio调试模式中将鼠标悬停在它上面时,我只能看到value0中向量的第一个值。这有什么不对?

2 个答案:

答案 0 :(得分:1)

float *是一个指针,而不是一个数组。调试器不知道它指向了多少元素,因此它只显示第一个元素。

在监视窗口中,您可以使用以下语法指定元素的数量:

  

value0,20

其中20是您希望可见的元素数量。

答案 1 :(得分:0)

我假设函数decode()来自库并返回一个指向静态分配的内存缓冲区的指针。你的第一份工作应该是复制缓冲区,因为下次调用函数时内容会发生变化。您需要知道缓冲区的长度,M。

我建议你把它复制到矢量:

std::vector<float> buffer(value0, value0+M);

如果我正确理解您的代码,您实际上有内存泄漏。您为缓冲区分配内存,但随后用从解码函数返回的指针替换指针。