• Popular Now

• 9
• 9
• 9
• 10
• 10

This topic is 891 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

I want to allow using up to 4GB of memory when using DirectX9. Currently, when memory usage goes too high, I get this message:

access violation at 0x000E8AE5 in C:\WINDOWS\SYSTEM32\d3dx9_43.dll,


I'm running my DLL via AVSMeter.exe which has the /LARGEADDRESSAWARE compilation flag.

Then in my code

I replace

with

I still get the same error message. What else do I need to change to make it work?

Share on other sites

AFAIK when you turn on /LARGEADDRESSAWARE, you still have to use the "/3GB" boot option unless you're on a 64-bit OS.

But if you're on a 64-bit OS, build a 64-bit exe instead, which is the proper way to solve your problem.

Share on other sites

I have a 64-bit OS, and this is an AviSynth plugin; AviSynth doesn't support 64-bit.

Share on other sites

Nobody has an idea on this one? Basically, it *should* be working but isn't?

I'm using an EXE such as AvsMeter that has the 4GB patch, which loads the AVS script file and loads AviSynth.dll, which then loads my DLL, and the crash occurs within DirectX when memory usage gets too high.

If it *should* be working, any reason why it wouldn't?

Share on other sites
There is one solution that can work for you.

Your problem obviously is that you're running out of virtual address space (past 2GB).

You can refactor your code so that you use expanded memory instead. The idea is to work on a small amount of virtual memory chunks while the physical memory backing that is much larger. So you can use for example 6GB of physical memory but only read 128 MBs using pointers at a time.

Read Myth: Without /3GB a single program can't allocate more than 2GB of virtual memory on how to do that. Edited by Matias Goldberg