user5165: I have the following memory allocation: 
unsigned char g1[]={
  0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ....0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; 
g2[]={
  0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ....0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; 
... 

 unsigned char* index[10] = {g1,g2,g3,g4,g5,g6,g7,g8,g9,g0}; 

This is accessed in the following way:
unsigned char* getMatch(int input){
  return index[input];
}

This is then futher acces using the method of 
unsigned char store[1024]
unsigned char* temp = getMatch(n);
for(int i=0;i <50;i++){
 store[i]=temp[i];
}

and store is then modified and send to an external device.
As my program is randomly failing I think it might be running low on SRAM and was wondering if there is any way to force this memory to be placed in flash. Anybody got an idea?

user3825: It's stored in both the FLASH and SRAM because it's initialized array. To store in FLASH only you need use PROGMEM attribute.
const unsigned PROGMEM char g1[]= ...

You cannot access directly but using memcpy_P() function.

5165: <p>I have the following memory allocation: </p>

<pre><code>unsigned char g1[]={
  0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ....0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; 
g2[]={
  0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ....0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; 
... 

 unsigned char* index[10] = {g1,g2,g3,g4,g5,g6,g7,g8,g9,g0}; 
</code></pre>

<p>This is accessed in the following way:</p>

<pre><code>unsigned char* getMatch(int input){
  return index[input];
}
</code></pre>

<p>This is then futher acces using the method of </p>

<pre><code>unsigned char store[1024]
unsigned char* temp = getMatch(n);
for(int i=0;i &lt;50;i++){
 store[i]=temp[i];
}
</code></pre>

<p>and store is then modified and send to an external device.</p>

<p>As my program is randomly failing I think it might be running low on SRAM and was wondering if there is any way to force this memory to be placed in flash. Anybody got an idea?</p>
 3825: <p>It's stored in both the FLASH and SRAM because it's initialized array. To store in FLASH only you need use PROGMEM attribute.</p>

<pre><code>const unsigned PROGMEM char g1[]= ...
</code></pre>

<p>You cannot access directly but using <em>memcpy_P()</em> function.</p>
