Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8142051
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T12:41:58+00:00 2026-06-06T12:41:58+00:00

So the addressable memory space in a 32-bit program is 4 gigabytes. Respectively, in

  • 0

So the addressable memory space in a 32-bit program is 4 gigabytes. Respectively, in a 64-bit application, there are ~18 exabytes of addressable space.

The kernel32.dll API has a variety of methods regarding the program’s heap and/or memory.

So my current understanding is that for example if you call HeapAlloc and pass it the amount of memory you need to allocate, it will return a pointer to the address of that allocated memory space… (Please correct me if I’m wrong here though.)

Now the advantage of using the win32-api functions for this is obviously that Windows knows best where it put other components like loaded DLLs. That’s why I’m asking…

Is there a fixed position in memory for DLL files. I think I read somewhere that for 32-bit it commonly is the upper half of the memory space (0x80000000 and up), but even if that’s true, what would the position be for 64-bit applications?

Also, is it not possible to simply use pointers to some memory freely without having Windows allocate it first? What would the side-effects be?

I’m semi-new to this subject, so any help or hints are appreciated! =)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-06T12:41:59+00:00Added an answer on June 6, 2026 at 12:41 pm

    Also, is it not possible to simply use pointers to some memory freely without having Windows allocate it first? What would the side-effects be?

    The side effects are simple: your application would crash.

    Windows (and every other sane OS) uses virtual memory: the OS maps physical memory into the virtual address space that your process sees. And it performs this mapping on demand: when you ask it to allocate a block of memory, it maps a corresponding range of virtual memory addresses to a valid chunk of memory.

    Writing to an arbitrary address means you’ll hit a memory page that has not been mapped by the OS to any backing memory. Then you’ll get an access violation (or segmentation fault on *nix)

    Is there a fixed position in memory for DLL files

    Nope. How could there be? If you had one DLL file, it could be done. What if your application loads two DLLs? What if it loads 40? 400? And each DLL has a different size, so if they were loaded into fixed locations, they might end up overlapping.

    On top of this, recent versions of Windows perform address space randomization: to mitigate certain security exploits, Windows tries to ensure that it loads DLLs and executables to different locations if you launch the application multiple times.

    In short: your process runs under Windows. It is a Windows citizen and has to obey Windows laws. If it needs to access a resource (including, but not limited to, memory), it has to ask Windows to please make that resource available.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Why do computers have byte-addressable memory, and not 4-byte-addressable memory (or 8-byte-addressable memory for
I'm using and x86 based core to manipulate a 32-bit memory mapped register. My
I need an API-addressable, Java-based XML editor that is context aware. For instance, if
Given is the snap shot of memory of a byte-addressable computer. What would be
I have a data stream that is addressable only in 8-bit bytes, I want
I have a 32 bit msvc++ application running in a production environment that is
I want to have a bean of type com.a.A which has several addressable properties
In a 32-bit machine each process gets a 4GB virtual space. In this case
$:.unshift File.join(File.dirname(__FILE__),\ 'vendor','addressable-2.1.0','lib','addressable','uri') Does the code above access a file that has this path:
I am developing a 32 bit application in .NET that for various reasons cannot

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.