使用xcode设置float数组但在ios上失败

时间:2013-11-11 10:38:35

标签: c++ malloc

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

#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;

欢迎评论

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

你应该真正使用C ++意味着

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

现在,当您需要使用该向量调用C库函数时,c库通常需要float*size。你从这个矢量得到这个:

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

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