0

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

现在在我的 c 代码中,我有一个

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

现在当我做

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

当我在 Visual Studio 调试模式下将鼠标悬停在 value0 上时,我只能看到向量中的第一个值。这里有什么问题?

4

2 回答 2

1

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

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

值0,20

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

于 2012-08-25T07:23:08.340 回答
0

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

我建议您将其复制到矢量:

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

如果我正确理解了您的代码,那么您实际上存在内存泄漏。您为缓冲区分配内存,然后将指向它的指针替换为从 decode 函数返回的指针。

于 2012-08-25T08:14:04.237 回答