这是opencv里面的一个c++编译的库函数,我有几个不理解的地方想请教?


include "_cxcore.h"

ifdef _TMS320C6X

// default
void*
cvAlloc( size_t size)
{
void * ptr;
CV_FUNCNAME( "cvAlloc" );//这个地方是干什么的??cv_funcname是什么函数?
BEGIN ;


 ptr = memalign( (CV_MALLOC_ALIGN/8), size);//这个cv_MALLOC_ALIGN是什么?
if( !ptr )
    CV_ERROR( CV_StsNoMem, "Out of memory" );

__END__;
return ptr;

}
// default
void
cvFree_( void* ptr)
{
if(ptr)
free(ptr);
}

else // _TMS320C6X

// default
void*
cvAlloc( size_t size)
{
char *ptr, *ptr0;
CV_FUNCNAME( "cvAlloc" );
BEGIN ;


 ptr0 = (char*)malloc(
    (size_t)(size + CV_MALLOC_ALIGN*((size >= 4096) + 1) + sizeof(char*)));//(size_t)的作用是什么??,这句话的作用是什么??

if( !ptr0 )
    return 0;

// align the pointer
ptr = (char*)cvAlignPtr(ptr0 + sizeof(char*) + 1, CV_MALLOC_ALIGN);
*(char**)(ptr - sizeof(char*)) = ptr0;

__END__;
return ptr;

}
// default
void
cvFree_( void* ptr)
{
// Pointer must be aligned by CV_MALLOC_ALIGN
if(ptr)
{
if( ((size_t)ptr & (CV_MALLOC_ALIGN-1)) != 0 )
return CV_BADARG_ERR;
free( *((char**)ptr - 1) );
}

}

endif // _TMS320C6X

/* End of file. */
问题写到了函数里面,希望能得到解答,谢谢!

opencv C++ cxcore

永遠D魔法師 9 years ago

Your Answer