0

以下のコードを使用して、float 配列の値を設定します

#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 の float 配列のようなオブジェクトが必要であると仮定します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 に答える