> 
> As far as the NSData goes, I'm glad you pointed the redundancy of it out. 
> I'll just encode the bytes themselves. 
> 

erm... actually, just using:

[aCoder encodeBytes:coincidences length:coincsSize forKey:@"coincidences"];

fails with a complaint about getting a float* when it expects a uint8_t const. 
In fact, I know remember that's why I used the NSData in the first place... any 
thoughts? 
This is on 10.6.2, if that means anything.

J.



> Just a note to Sherm that coincidences is malloced as (maxCoincs * inputSize 
> * sizeof(float)), because it's a 2D float array with dimensions maxCoincs x 
> inputSize. 
> 
> The software is just a research project, for now, so no worries about 
> portability (I'll cross that bridge if I ever get there!).
> 
> Now onto the crash that's happening when I try to actually *use* the app 
> after loading from a saved file! ugh... ;-)
> 
> thanks all,
> 
> J.
> 
> 
> On 2009-12-01, at 11:40 AM, Sherm Pendley wrote:
> 
>> On Tue, Dec 1, 2009 at 1:47 PM, James Maxwell
>> <jbmaxw...@rubato-music.com> wrote:
>>> I'm trying to save the state of my app. It chews up a lot of memory, most 
>>> of which is in large float* matrices. I'm getting an EXC_BAD_ACCESS error 
>>> in -encodeBytes:length:forKey: and I'm just wondering what might be 
>>> happening. The float* "coincidences" is a malloced array.
>>> 
>>> NSUInteger coincsSize = maxCoincs * inputSize * sizeof(float);
>> 
>> This looks suspicious to me. Based on the variable names, it looks
>> like you malloc(maxCoincs * sizeof(float)), then store the actual
>> number of floats in the buffer in inputSize. If that's what you're
>> doing, you only need to multiply by maxCoincs (to get the size of the
>> whole buffer) or by inputSize (to find out how much of the buffer is
>> actually in use) - not by both of them.
>> 
>>> NSData* coincData = [NSData dataWithBytesNoCopy:&coincidences 
>>> length:coincsSize];
>>> [aCoder encodeBytes:[coincData bytes] length:coincsSize 
>>> forKey:@"coincidences"];
>> 
>> As someone else said, if you created the buffer with "coincidences =
>> malloc(...)", then you don't need to dereference it here; doing so
>> will give you the address of the pointer variable, not the address of
>> the buffer to which it points.
>> 
>> What's the point of creating the NSData object here? Wouldn't this be
>> just as good?
>> 
>>   [aCoder encodeBytes:coincidences length:coincsSize forKey:@"coincidences"];
>> 
>> sherm--
>> 
>> -- 
>> Cocoa programming in Perl:
>> http://www.camelbones.org
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/jbmaxwell%40rubato-music.com
> 
> This email sent to jbmaxw...@rubato-music.com

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to