Недавний вопрос о строковых литералах в .NET попался мне на глаза. Я знаю, что строковые литералы интернированы, так что разные строки с одинаковым значением относятся к одному и тому же объекту. Я также знаю, что строка может быть интернирована во время выполнения:
string now = DateTime.Now.ToString().Intern();
Очевидно, что строка, которая интернирована во время выполнения, находится в куче, но я предположил, что литерал помещается в сегмент программных данных (и так сказал в ответе к указанному вопросу). Однако я ничего не помню. Я предполагаю, что это так, потому что это так, как я это сделал, и тот факт, что инструкция ldstr
IL используется для получения литералов, и никакое распределение, похоже, не происходит, похоже, поддерживает меня.
Короче говоря, где живут строковые литералы? Это на куче, сегменте данных или на каком-то месте, о котором я не думал?
Изменить: Если строковые литералы находятся в куче, когда они выделяются?