Когда память распределяется динамически, она хранится в куче независимо от того, где она была объявлена? Например, если следующая строка кода объявлена внутри main()Динамически распределенная очистка памяти
int * p = new int [100000];
Будет ли выделяться память из кучи или стека?
Если та же декларация сделана в глобальном масштабе, память будет получена из кучи. Но я читал, что динамически выделенная память хранится в куче, а локальная переменная хранится в стеке. Итак, когда вышеуказанная строка кода выполняется изнутри main, что делает ее локальной переменной, будет ли память получена из стека или кучи?
Очень просто: если вы используете «новое», память будет выделена из кучи. «p» - локальная переменная - это указатель и хранится в стеке. 10 000 ints, на которые указывает, были выделены «новыми»; они хранятся в куче. – paulsm4
'p' сам находится в стеке. Он указывает на память, выделенную в куче. – interjay