24 #if defined(GRK_HAVE_VALGRIND)
25 #include <valgrind/memcheck.h>
35 #ifdef GRK_DEBUG_SPARSE
41 #if defined(GRK_HAVE_VALGRIND) && defined(GRK_DEBUG_SPARSE)
42 const size_t grk_mem_ok = (size_t)-1;
44 #define GRK_DEBUG_VALGRIND
45 template<
typename T>
size_t grk_memcheck(
const T* buf,
size_t len){
46 size_t val = VALGRIND_CHECK_MEM_IS_DEFINED(buf,len *
sizeof(T));
47 return (val) ? (val - (uint64_t)buf)/
sizeof(T) : grk_mem_ok;
49 template<
typename T>
void grk_memcheck_all(
const T* buf,
size_t len, std::string msg){
50 for (uint32_t i = 0; i < len; ++i) {
51 auto val = grk_memcheck<T>(buf + i, 1);
52 if (val != grk_mem_ok){
53 std::ostringstream ss;
54 ss << msg <<
" " <<
"offset = " << i + val;
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57