예제 #1
0
static BOOL TestAlign(size_t align, size_t size)
{
    void *p = memalign(align, size);
    if (!p)
    {
        std::cerr << "Returned NULL for alignment " << align << std::endl;
        return FALSE;
    }

    Pointers.push_back(p);

    ADDRINT addr = reinterpret_cast<ADDRINT>(p);
    if (addr & (align-1))
    {
        std::cerr << "Incorrect alignment for " << align << " (p=" << p << ")" << std::endl;
        return FALSE;
    }

    std::cout << "Alignment " << align << " : Size : " << size << " " << p << std::endl;
    return TRUE;
}
예제 #2
0
static BOOL TestAlign(size_t align, size_t size)
{
    void *p;

    int err = posix_memalign(&p, align, size);

    if ( err == EINVAL )
    {
        std::cerr << "Invalid alignment value: " << align << std::endl;
        return FALSE;
    }

    if ( err == ENOMEM )
    {
        std::cerr << "Allocation failed due to insufficient memory." << std::endl;
        return FALSE;
    }
    
    ADDRINT addr = reinterpret_cast<ADDRINT>(p);

    if ( addr == 0x0 )
    {
        std::cerr << "Error: NULL value returned." << std::endl;
        return FALSE;
    }

    Pointers.push_back(p);

    if (addr & (align-1))
    {
        std::cerr << "Incorrect alignment for " << align << " (p=" << p << ")" << std::endl;
        return FALSE;
    }

    std::cout << "Alignment " << align << " : Size : " << size << " " << p << std::endl;
    return TRUE;
}