Como usar pinvoke para o ponteiro de matriz C struct para c #

Eu estou tentando usar pinvoke para marshall uma matriz de estruturas dentro de outra estrutura de C para C #. AFAIK, não pode fazer.
Então, em vez disso, na estrutura C, declaro um ptr para minha matriz e malloc. Problemas: 1) Como faço para declarar o equivalente no lado C #? 2) Como alocar e usar o equivalente no lado C #?

//The C code
typedef struct {
       int a;
       int b; } A;
typedef struct {
      int c;
      // A myStruct[100];    // can't do this, so:
      A *myStruct; } B;

//The c# code:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class A{
    int a;
    int b;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class B{
      int c;
      // can't declare array of [100] A structures...
     ?
 }

[EDIT]: De alguma forma eu interpretei mal o que eu li em outro lugar sobre matriz fixa de objetos no lado c #. E euposso corrigir o tamanho da matriz em C Então, compilado ok, mas depois recebo "referência de objeto não definida para uma instância de um objeto" ao usar:

data.B[3].a = 4567; Então, lendo em outro lugar sobre o que este erro pode ser, eu adicionei este método:

public void initA()
        {
          for (int i = 0; i < 100; i++) { B[i] = new A(); }
        }

Novamente, compilado OK, mas com a mesma mensagem de erro.

questionAnswers(1)

yourAnswerToTheQuestion