Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Memory allocation failure

Reply
Thread Tools

Memory allocation failure

 
 
vectorizor
Guest
Posts: n/a
 
      05-22-2007
Hello all,

I am writing a Photoshop plug-in on Windows, and I am having trouble
with allocating memory. Essentially, the code performs a very complex
operation on the image, so 9 buffer planes are required as scratch
memory. The problem occurs when the image that a user tries to process
is big, say 10 mega pixels or more. A Photoshop error pops up saying
"Could not complete the command because of a program error".

The error occurs in Photoshop's memory allocation routine,
'FilterRecord->bufferProcs->allocateProc'. It simply fails, hence the
problem must be allocating the memory. So I tried to replace this with
a call to a good old malloc, but trying to allocate the 9 planes
fails, because malloc returns a NULL pointer.

Now the weird thing is that processing a single 10MB will fail,
whereas I can process seven or eight 8MB images without a complaint
from Photoshop. Furthermore, with those seven or eight 8MB still open
in Photoshop, I can process a 20MB image with a command-line
equivalent of the plug-in. So in a nutshell, there is enough memory
as I can allocated twice more memory than what fails in Photoshop, so
what is going on? I could maybe understand that the Photoshop function
refuses to allocate such memory for some reasons, but why does the
malloc in the plug-in fail?! Especially since the malloc in the
command-line equivalent succeeds without a problem for an image TWICE
bigger?!

I would greatly appreciate any comments/ideas/suggestions.

Thanks in advance

Alex

 
Reply With Quote
 
 
 
 
Barry Schwarz
Guest
Posts: n/a
 
      05-22-2007
On 22 May 2007 01:49:08 -0700, vectorizor <(E-Mail Removed)>
wrote:

>Hello all,
>


snip Photoshop discussion

>
>Now the weird thing is that processing a single 10MB will fail,
>whereas I can process seven or eight 8MB images without a complaint
>from Photoshop. Furthermore, with those seven or eight 8MB still open


The fact that "small" allocations succeed while a "large" fails may
indicate nothing more sinister that memory fragmentation. (How many
pieces of kindling will fit through your front door vs how many full
grown redwoods?)

>in Photoshop, I can process a 20MB image with a command-line
>equivalent of the plug-in. So in a nutshell, there is enough memory
>as I can allocated twice more memory than what fails in Photoshop, so
>what is going on? I could maybe understand that the Photoshop function


This would seem to indicate that when Photoshop is active it does
something "strange" to the virtual memory in that task. As with most
virtual memory systems, each task has its own memory and whatever
Photoshop did with its is not affecting your command line task.

>refuses to allocate such memory for some reasons, but why does the
>malloc in the plug-in fail?! Especially since the malloc in the
>command-line equivalent succeeds without a problem for an image TWICE
>bigger?!
>
>I would greatly appreciate any comments/ideas/suggestions.


You really need to discuss this in a Photoshop newsgroup. You have
demonstrated that the problem is not likely in your C code or the C
run time library. Does Adobe provide any kind of tech support?

An alternative design, obviously slower but available immediately, is
to use files instead of allocated memory.


Remove del for email
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
An idea for heap allocation at near stack allocation speed Bjarke Hammersholt Roune C++ 14 03-06-2011 08:07 AM
Memory allocation failure in map container Saeed Amrollahi C++ 10 01-08-2011 04:54 PM
static memory allocation versus dynamic memory allocation Ken C Programming 24 11-30-2006 12:37 AM
What is the difference between dynamic memory allocation,and stack allocation ? chris C++ 6 10-28-2005 05:27 AM
Cross-compiler way to handle memory allocation failure ? Koen C++ 1 06-25-2003 10:50 AM



Advertisments