コードC++のポインタ配列
#include "stdafx.h"
#include <iostream>
void someFunc(double* pDoubleArray, int length)
{
double* pNewDoubleArray = new double[length];
for(int i = 0; i < length; i++)
{
pNewDoubleArray[i] = i * 3 + 2;
}
pDoubleArray = pNewDoubleArray;
}
int main()
{
double dbls[] = { 1, 2, 3, 4, 5 };
int length = sizeof dbls/sizeof dbls[0];
std::cout << "Before..." << std::endl;
for(int i = 0; i < length; i++)
{
std::cout << dbls[i] << ", ";
}
std::cout << std::endl;
someFunc(dbls, length);
std::cout << "After..." << std::endl;
for(int i = 0; i < length; i++)
{
std::cout << dbls[i] << ", ";
}
std::cout << std::endl;
while(true){ }
return 0;
}
出力
Before...
1, 2, 3, 4, 5,
After...
1, 2, 3, 4, 5,
は、ここで私が何をしようとしていますものです: 1.配列を作成し、いくつかの値 2パスでそれを埋めます新しい配列を作成し、渡された配列を新しく作成された配列に再割り当てする関数へのポインタとしての配列 3.変更を印刷しますs
私はまだ変更が表示されていない、と私はなぜわからない。その結果、メモリリークの問題を無視
ため息:
あなたを呼び出す主な機能は、変更することができる値を渡す必要があります。もう一度、std :: vectorは本当に必要なものです。 –
「ベクトル」を参照して渡さないと、同じ問題が発生します。 –
既に持っているアレイを変更するのではなく、実際に新しいアレイを作成することを確認できますか?あなたの 'main'関数は元の配列を変更したいと思うようです。 –