我通过接口有一个cpp功能
float* decode()
返回指向静态向量的原始数据的指针。
现在我的c代码中有一个
float *value0;
value0 = (float*) malloc(M* sizeof(float) );
现在我做的时候
value0 = work_decode1(h0, code0, 7, retain0);
当我在visual studio调试模式中将鼠标悬停在它上面时,我只能看到value0中向量的第一个值。这有什么不对?
答案 0 :(得分:1)
float *
是一个指针,而不是一个数组。调试器不知道它指向了多少元素,因此它只显示第一个元素。
在监视窗口中,您可以使用以下语法指定元素的数量:
value0,20
其中20是您希望可见的元素数量。
答案 1 :(得分:0)
我假设函数decode()来自库并返回一个指向静态分配的内存缓冲区的指针。你的第一份工作应该是复制缓冲区,因为下次调用函数时内容会发生变化。您需要知道缓冲区的长度,M。
我建议你把它复制到矢量:
std::vector<float> buffer(value0, value0+M);
如果我正确理解您的代码,您实际上有内存泄漏。您为缓冲区分配内存,但随后用从解码函数返回的指针替换指针。