setColor に 2 番目の呼び出しを追加すると、セグメンテーション違反が発生します。そのメソッドが何らかの形で配列ポインタを変更しているのではないかと思いますが、その理由はわかりません。
#include <iostream>
using namespace std;
struct Color {
int red;
int blue;
int green;
};
void setColor(Color **arr, int index, int red, int blue, int green) {
Color *ptr = arr[index];
(*ptr).red = red;
(*ptr).blue = blue;
(*ptr).green = green;
}
int main() {
Color *arr[3];
setColor(arr, 0, 12, 23, 34);
return 0;
}