\documentclass[tikz]{standalone}
%\usepackage{listings}
%\lstset{%
%	basewidth=0.5em,
%	basicstyle=\tt\scriptsize,
%	breakatwhitespace=false,
%	breaklines=true,
%	captionpos=b,
%	columns=[c]fixed,
%	commentstyle=\sl,
%	escapeinside={[+}{+]},  % chktex 9
%	frame=,
%	keepspaces=true,
%	keywordstyle=\bf,
%	showspaces=false,
%	showstringspaces=false,
%	showtabs=false,
%	stringstyle=\it,
%	tabsize=4,
%	numberstyle=\tiny,
%	language=C,
%}
\usetikzlibrary{arrows.meta,shapes.symbols,matrix,positioning}
\begin{document}
\begin{tikzpicture}[%
	memory/.style={
		matrix of nodes,
		every node/.append style={
			font=\footnotesize\tt, outer xsep=.4ex,
		anchor=base},
		column 2/.append style={
			every node/.append style=
			{draw,fill=white, 
				minimum width=#1, 
			minimum height=1.3em}
		},
		row sep=-.4pt,
	},
	memory/.default=4em,
	descr/.style={draw=none,fill=none},
	break above/.style={shape=tape, tape bend top=in and out, tape bend bottom=none},
	break below/.style={shape=tape, tape bend top=none, tape bend bottom=in and out},
	!!/.style={fill=green!20}, % chktex 26
	pointer/.style = {font=\tt, anchor=base, inner sep=2pt},
	]
	\matrix (main) [memory] {
		& |[descr]| {\rm high addresses} \\
		& || heap\\
		& || $\downarrow$\\
		& || \ldots\\
		& || $\uparrow$\\
		& || stack\\
		& || $\uparrow$ \\
		& || tasks \\
		& |[descr]| {\rm low addresses}\\
	};
	\matrix (heap) [right=of main,memory,yshift=2em] {
		& || tree\textsubscript{0}\\
		& || tree\textsubscript{1}\\
		& || tree\textsubscript{\ldots}\\
		& || tree\textsubscript{n}\\
	};
	\matrix (global) [left=of main,memory,yshift=2em] {
		& || task\textsubscript{n}\\
		& || task\textsubscript{\ldots}\\
		& || task\textsubscript{1}\\
		& || task\textsubscript{0}\\
	};
	\draw[dashed] (main-2-2.north east) -- (heap-1-2.north west);
	\draw[dashed] (main-3-2.south east) -- (heap-4-2.south west);

	\draw[dashed] (main-7-2.north west) -- (global-1-2.north east);
	\draw[dashed] (main-8-2.south west) -- (global-4-2.south east);

%	\node (tree) [right=of heap] {
%\begin{lstlisting}
%struct TaskTree {
%	enum BCTaskType_c task_type;
%	bool trash;
%	uint16_t refresh_min;
%	uint16_t refresh_max;
%	struct TaskTree *parent;
%	union {
%		...
%		uint16_t readd;
%		...
%		struct {
%			struct TaskTree *lhs;
%			struct TaskTree *rhs;
%		} tand;
%		...
%	} data;\end{lstlisting}
%	};
%
%	\draw[dashed] (tree.north west) -- (heap-1-2.north east);
%	\draw[dashed] (tree.south west) -- (heap-1-2.south east);
\end{tikzpicture}
\end{document}
