1. A method for sharing memory between a central processing unit (CPU) and graphics processing unit (GPU) of a computing device, comprising: creating an allocation of memory of one or more pages for the GPU to operate on; determining whether the allocation is in a GPU domain by referencing a GPU affinity database, wherein creating of the allocation continues if the one or more pages are not in the GPU domain, and wherein creating of the allocation is delayed until the GPU has completed any pending operational commands if the one or more pages are in the GPU domain; detecting whether the allocation is not page-aligned, wherein an allocation is page-aligned when a base address of the allocation and size of the allocation are evenly divisible by the applicable page-size; and successfully sharing the allocation, even if not page-aligned, and even if an operating system of the computing device doesn't support sharing of non-page-aligned allocations.