Windows窗体中的C ++多行文本框溢出

时间:2018-12-10 08:36:58

标签: c++ forms memory textbox multiline

我的程序中有一个日志文本框,只要程序运行,其内容就会越来越大。我没有时间自己进行测试,但我想知道文本框如何处理大量文本。它会耗尽内存还是以某种方式自动释放其中的一部分?如果不是自动完成,那么最好的方法是自己处理而不是不时清除日志?

编辑:我正在将Visual Studio 2013 CLR项目与Windows窗体一起使用

2 个答案:

答案 0 :(得分:1)

texbox只会接受越来越多的文本,直到用尽可用内存为止。为了减轻这种情况,您可以在代码中设置一个上限,以选择要显示的字符/行数。达到上限后,请先删除较旧的数据,然后再添加新数据。

否则,如果需要在最小化内存使用的同时显示所有可能的文本,请考虑重新考虑UI策略。

例如,我有一个应用程序可以显示最大为GB的日志文件。我使用虚拟的ListView来显示文本,在其中将 visible 文本保留在内存中,并随着用户在屏幕上滚动,动态地(取消)加载非可视文本。列表显示。这样可以将内存使用量最多减少到只有几MB,同时仍然可以访问整个日志。

您可能会考虑做类似的事情。使用文件或数据库来存储用户不会立即看到的日志数据,并在用户需要查看时根据需要加载该数据。

答案 1 :(得分:0)

我建议您为此使用日志数据的链接列表。 例如:

class ApiIndexView(generics.ListCreateAPIView) 

您为nextLog注入了NULL,当您要记录其他内容时,您将创建一个新的LogNode并使用LogData和NULL对其进行初始化。当您不知道真正需要多少数据时,建议使用堆分配。通过保存指向第一个logNode的指针,您可以访问所有日志节点。

文本框在需要时重新分配内存。由于文本框位于堆上,因此不需要知道它将使用多少内存,并且正如名称动态分配所暗示的那样,它可以动态分配内存。

相关问题