I think a (char *) is 4 bytes, not three... If you're going to dynamically
allocate the array of pointers, why not say "level * sizeof(Char *)"
instead of "3 * sizeof(Char)"?  In fact, the size of a "Char" really has no
relevance to this array.
The fact that you're only allocating about 3/4 of the memory you really need
would explain why your program stops "roughly" 3/4 of the way through the
array.
-don
"Brian Preston" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
>
> I'm getting the error that says 'your app just wrote
> to memory location 0x0BLAH...' - basically, I didn't
> allocate enough memory with my buffer.
>
> I'm simply trying to create a list of 1 to n, where n
> is a random number from 1 to 10.  I can't find any
> pattern in when the error occurs; it will crash on the
> 6th iteration when I'm trying to create 8, or on the
> 3rd iteration when I'm trying to create 4, etc. etc.
> What am I doing wrong?
>
> Here's the code:
>
> static Char ** diffs (defined as static so it will
> hang around long enough
> for the list to use it, then freed upon FrmClose)
> static void CreateDiffList() {
>  int d=0;
>
>  level = GetRandom(10)+1;
>  diffs = (Char **) MemPtrNew (level * 3 *
> sizeof(Char));
>
>  for (d; d < level; d++) {
>   diffs[d] = (Char *) MemPtrNew(3 * sizeof(Char));
>   if ( d<9) {
>    StrCopy(diffs[d], " ");
>    StrIToA(SBuf2, d+1);
>    StrCat(diffs[d], SBuf2);
>   } else { StrCopy(diffs[d], "10");
>   } StrCopy(SBuf2, diffs[d]);
>  }
>
>  LstSetListChoices(GetObjectPtr(StartDifficultyList),
> diffs, level);
>  LstSetSelection(GetObjectPtr(StartDifficultyList),
> level-1);
>
> }
>
> Thanks
>
> __________________________________
> Do you Yahoo!?
> SBC Yahoo! DSL - Now only $29.95 per month!
> http://sbc.yahoo.com
>
>



-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to