Я получаю ошибку сегментации для следующего кода. Может кто-нибудь объяснить, почему? Я хотел бы иметь возможность скопировать содержимое argv в новый массив, который я назвал rArray.Копирование argv в новый массив
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
char **rArray;
int numRows = argc;
cout << "You have " << argc << " arguments:" << endl << endl;
cout << "ARGV ARRAY" << endl;
for (int i = 0; i < argc; i++)
{
cout << argv[i] << endl;
}
cout << endl << endl << "COPIED ARRAY" << endl;
for(int i; i < numRows; i++)
{
for (int j = 0; j < argc; j++)
{
rArray[i][j] = argv[i][j];
}
}
for (int i = 0; i < argc; i++)
{
cout << "Copied array at index " << i << "is equal to " << rArray[i] << endl;;
}
cin.get();
}
Программа выводит:
/a.out hello world
You have 3 arguments:
ARGV ARRAY
./a.out
hello
world
COPIED ARRAY
Segmentation fault: 11
Почему я получаю эту ошибку? Как это исправить?
EDIT: У меня есть исправление, меняя char **rArray
на string rArray
и динамически выделяя размер оттуда.
'символ ** rArray' не выделяет память для вас, и' J
Ryan
@minitech Технически 'char ** rArray;' выделяет пространство стека (достаточно удерживать указатель). –
@FrerichRaabe: Да, я вынул «вообще» из-за этого = P – Ryan