0

我使用下面的代码来设置浮点数组的值

#include "math.h"
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
class MathCore
{
public:
    MathCore();
    virtual ~MathCore( );                   
    bool dosomething ( );
};

#include "MathCore.h"
MathCore::MathCore()
{

}

MathCore::~ MathCore()
{

}

bool MathCore::doSomething ( )
{

   //-------------------------------------------------
   float *xArray;
   xArray=(float*)malloc(sizeof(float)*5);
    float v=0.1;
    xArray[0]=v;

    return 1;
}

它总是报告 EXC_BAD_ACCESS 错误

xArray[0]=v;

欢迎您的评论

4

2 回答 2

1

假设您想要一个大小为 5 的类似浮点数组的对象,其中第一个元素设置为0.1

std::vector<float> xArray(5); // contains 5 floats, each set to 0.0f
xArray[0] = 0.1;

如果您真的必须使用指向动态分配数组的原始指针,那么,

float* xArray = new float[5];   // uninitialized elements.
float* xArray = new float[5](); // elements initialized to 0.0f.
xArray[0] = 0.1;

原始指针的更好替代方法可能是

std::unique_ptr<float[]> xArray(new float[5]);
xArray[0] = 0.1;
于 2013-11-11T10:45:24.597 回答
0

你真的应该使用 C++ 手段

std::vector<float> xArray;
xArray.push_back(0.1);

现在,当您需要使用该向量调用 C 库函数时,c 库通常需要 afloat*和 a size。你从你的向量中得到这个,如下所示:

cfunc(&xArray[0], xArray.size());

您获取 xArray 的第一个元素的地址(根据标准,所有元素必须位于连续块中)并size()返回 xArray 中的元素数。

于 2013-11-11T10:55:02.297 回答