Вот код:
int main()
{
using namespace std;
int nights = 1001;
int * pt = new int; // allocate space for an int
*pt = 1001; // store a value there
cout << "nights value = ";
cout << nights << ": location " << &nights << endl;
cout << "int ";
cout << "value = " << *pt << ": location = " << pt << endl;
double * pd = new double; // allocate space for a double
*pd = 10000001.0; // store a double there
cout << "double ";
cout << "value = " << *pd << ": location = " << pd << endl;
cout << "location of pointer pd: " << &pd << endl;
cout << "size of pt = " << sizeof(pt);
cout << ": size of *pt = " << sizeof(*pt) << endl;
cout << "size of pd = " << sizeof pd;
cout << ": size of *pd = " << sizeof(*pd) << endl;
return 0;
}
Теперь вот заметка автора о коде:
Еще одно замечание: обычно новый использует другой блок памяти, чем обычные определения переменных, которые мы использовали. И переменные ночей, и pd имеют свои значения, хранящиеся в области памяти, называемой стек, тогда как память, выделенная новой находится в области, называемой кучей или свободным хранилищем.
Начальный вопрос:
Теперь я беспокоюсь об этом: переменная pd была создана по ключевому слову new, поэтому она должна храниться в области под названием куча как переменная pt, так как они были созданы с помощью ключевого слова new.
Я что-то упустил? Заранее благодарю вас за ваши материалы.
Пересмотренный вопрос/последующее наблюдение на основе трюма:
Этот вопрос был приостановлен 5 людьми, потому что они не могли понять, что я просил. Я считаю, что на мой вопрос уже был дан ответ, но для тех, кто до сих пор не уверен в том, что я изначально просил, пожалуйста, прочитайте:
Я не был в курсе объяснений автора о том, где переменные и их значения были сохранены в памяти. До объяснения автора я полагал, что любая память, созданная динамически (или я должен сказать, во время выполнения после компиляции) с использованием ключевого слова new, сохраняется в куче, а не стек.
Итак, это смутило меня, когда он написал, что переменная pd имеет значение хранится в стеке, но опять же, как это возможно, если переменная было создано во время "runtime" с ключевым словом new, поэтому оно должно быть в куче, а не стек.
Пожалуйста, попробуйте использовать приведенный выше код в качестве ссылки и, в частности, ** переменных (ночей, pd и pt) в своем ответе, чтобы я мог понять это с точки зрения кода.
Заранее благодарю вас!