字符串和内存使用情况

字符串和内存使用情况

TeX 引擎最初是用 Pascal 编写的,当时动态内存分配尚未普及。现代实现往往用 C 语言完成。要符合 TeX 的资格,实现必须通过标准测试,而该测试可能不会关注字符串类型和内存使用情况。

考虑以下:

\documentclass{article}
\begin{document}
\def\buffer{x}%
\let\test=\buffer
\edef\buffer{\buffer,x}%
\verb$\buffer$ = \buffer

\verb$\test$ = \test
\end{document}

问题是, 是复制\let还是\buffer仅仅指向\buffer当前存储在内存中的位置?如果是前者,TeX 需要在字符串级别上进行动态内存分配。如果是后者,则每个分配的字符串都会保留在内存中,直到程序完成。这可以解释为什么放置太多tikzpictures 会耗尽所有资源。

相关内容