标签: string-table

Java和.NET字符串文字在哪里?

关于 .NET中字符串文字的最新问题引起了我的注意.我知道字符串文字被实习,因此具有相同值的不同字符串引用同一个对象.我也知道字符串可以在运行时实现:

string now = DateTime.Now.ToString().Intern(); 
Run Code Online (Sandbox Code Playgroud)

显然,在运行时实例化的字符串驻留在堆上,但我假设文字放在程序的数据段中(并且在我对所述问题的回答中这样说).但是我不记得在任何地方看到这个.我认为这是这种情况,因为我是如何做到这一点以及ldstrIL指令用于获取文字并且似乎没有进行分配的事实似乎支持我.

简而言之,字符串文字在哪里?它是在堆上,数据段还是我没想过的某个地方?


编辑:如果字符串文字确实驻留在堆上,它们何时分配?

.net java string-literals string-table

28
推荐指数
2
解决办法
8727
查看次数

静态字符串文字表?

在C++中创建全局和静态字符串表的正确方法是什么?

通过"全局",我的意思是:可以从任何包含标题的文件中使用.但不是某些运行时创建的singelton objcet的一部分.

通过"静态",我的意思是:由于很少的运行时间设置可能.只读存储器页面中的数据.每个应用只有1个数据实例.

通过"字符串",我的意思是:Null终止的字符数组很好.std :: string会很好,但我不认为它可以用上面的方法来完成.正确?

通过"表",我的意思是:我的意思是一个可索引的数组.所以我猜本身不是一张桌子.但是我在这一点上很灵活.开放的想法.

通过"C++",我的意思是:C++而不是C.(更新:C++ 98,而不是C++ 11)

c++ string static readonly string-table

13
推荐指数
2
解决办法
1万
查看次数

ELF中的字符串表

  1. 我得到一些符号,我得到一个精灵文件的hexedit.我怎么知道这个符号出现在哪个部分?

  2. strtab和之间有什么不同shstrtab?还有一个符号字符串数组?

当我在名表中获得索引时,它是索引strtab还是shstrtab

elf string-table

10
推荐指数
1
解决办法
2万
查看次数

printf()使用字符串表"解码器环"调试库

我正在写信,看看你们中是否有人见过或听说过我将要描述的想法的实现.

我有兴趣为嵌入式目标开发一个printf样式的调试库.目标是非常远程的,我和目标之间的通信带宽预算非常紧张,所以我希望能够以非常有效的格式获得调试消息.

通常,调试语句类似于以下内容:

myDebugLibraryPrintf("Inside loop, processing item %d out of %d.\n", i, numItems);
Run Code Online (Sandbox Code Playgroud)

当然,当它被扩展为文本时,打印的字符串类似于"内部循环,处理项目5中的10个\n",总共约42个字节左右.此语句打印出的90%以上的数据是静态的,字面的 - 在编译时已知.当然,在编译时只知道"5"和"10".

我想做的是只能回发那两个整数(8个字节而不是42个).一旦我收到了这些数据,我就会有一些"解码器响铃"让我"重新构建"收到的数据并在我的位置打印出完整的调试信息.

我会自动生成"解码器环"(作为构建过程的一部分),在编译时为每个myDebugLibraryPrintf()语句提供一个唯一的ID,并生成一个将这些唯一ID映射到原始格式字符串的表.然后,任何时候myDebugLibraryPrintf()被调用的目标时,它发送该唯一ID和任何的"%d","%f"等可变参数格式字符串看到的值,但格式字符串本身不会被传送.(我"%s"现在可能只是禁止使用项目...)回到我的位置,我们将有一个程序查找表中的唯一ID,找到相应的格式字符串,并使用它来重建原始调试消息.

我觉得以前可能有人有这个想法,我想社区中的某个人可能会看到类似的东西(或者甚至知道这样做的开源库).

约束:

  • 为了澄清,我在这里处理C/C++,我对printf()的100%完全替换实现不感兴趣 - 像非文字格式字符串,%s(字符串)格式说明符或更高级的东西格式说明符,例如将宽度或精度放在varargs列表中,%*.*d不需要支持.

  • 我希望字符串表作为构建过程的一部分自动生成,因此添加调试不会比添加传统的printf()更多的工作.如果需要超过最小努力量,我项目中的任何人都不会使用它.

  • 在生成字符串表的构建过程中做额外的工作几乎是假定的.幸运的是,我控制了我对使用这个库感兴趣的所有源代码,并且我在构建过程中有很大的灵活性.

谢谢!

c debugging printf string-table

8
推荐指数
1
解决办法
603
查看次数

VC++ 10 MFC:进行本地化的正确方法是什么

我是一个不得不在MFC应用上做一些工作的.NET人.该应用程序是VS2008 MFC可执行文件,我已转换为VS2010.原始开发人员通过在应用程序命令行中指定具有键值对的.txt文件的名称来进行本地化.安装的可执行文件快捷方式指定了一个不同的.txt文件,具体取决于安装该应用程序的国家/地区.如果您直接运行.exe,这当然不起作用.对我来说,这似乎是一种奇怪的方式.

我想用MFC方式做这个,但我很难在Google上找到明确的答案.我的理解是.rc文件中的字符串表应该用于本地化?这是目前MFC的最佳实践吗?

关于字符串表,我已经读过,实践是为不同的语言创建多个字符串表.MFC应用程序如何选择使用哪种语言?它是基于机器当前语言设置还是我可以控制它(可能是我们希望语言由我们也在构建的Wix .msi安装程序指定)?

我还读到在MFC应用程序中嵌入所有资源已经失宠了,现在你应该编译单独的资源.dll?这是真的生病调查如何做到这一点......

最后,我是否必须做一些特殊的事情来让MFC支持Unicode或默认是MFC Unicode?

谢谢

mfc localization resource-file string-table visual-c++-2010

8
推荐指数
2
解决办法
8134
查看次数

区分ELF文件中的.shstrtab和.strtab

我想知道解析 ELF 文件时.shstrtab与 a 相比如何识别a ?.strtab从阅读elf(5) - Linux 手册页来看,两者都是节标题类型SHT_STRTAB,那么我如何知道我遇到的是其中之一呢?

他们的描述是:

.shstrtab
    This section holds section names.  This section is of type
    SHT_STRTAB.  No attribute types are used.
Run Code Online (Sandbox Code Playgroud)
.strtab
    This section holds strings, most commonly the strings that
    represent the names associated with symbol table entries.  If
    the file has a loadable segment that includes the symbol
    string table, the section's attributes will include the
    SHF_ALLOC bit.  Otherwise, the bit will be off. …
Run Code Online (Sandbox Code Playgroud)

linux elf string-table

4
推荐指数
1
解决办法
5429
查看次数