URL-адрес ответа
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_uri=https://vast-ridge-80091.herokuapp.com/auth/google/callback&scope=profile email&client_id=process.env.GOOGLE_CLIENT_ID
содержит ошибку client_id
client_id = process.env.GOOGLE_CLIENT_ID
blockquote> [ 115] Вы должны заменитьprocess.env.GOOGLE_CLIENT_ID
на client_id
Каждый раз, когда Вы "инстанцируете" объекта/символа с помощью нового (мы говорим C++ здесь), новая зона памяти будет выделена для этого объекта. В противном случае это будет помещено на "локальную" зону памяти.
Проблема состоит в том, что у меня нет стандартного определения для "локальной" зоны памяти.
Это означает что, например:
struct A
{
A()
{
c = new C() ;
}
B b ;
C * c ;
}
void doSomething()
{
A aa00 ;
A * aa01 = new A() ;
}
Объект aa00 выделяется на стеке.
Как aa00:: b выделяется на "локальной" памяти согласно aa00, aa00:: b выделяется в диапазоне памяти, выделенном новой aa01 инструкцией. Таким образом, aa00:: b также выделяется на стеке.
Но aa00:: c является указателем, выделенным с новым, таким образом, объект, разработанный aa00:: c находится на "куче".
Теперь, хитрый пример: aa01 выделяется через новое, и как таковой на "куче".
В этом случае, как aa01:: b выделяется на "локальной" памяти согласно aa01, aa00:: b выделяется в диапазоне памяти, выделенном новой aa01 инструкцией. Таким образом, aa00:: b находится на "куче" "в" памяти, уже выделенной для aa01.
Как aa01:: c является указателем, выделенным с новым, объект, разработанный aa01:: c находится на "куче" в другом диапазоне памяти, чем тот, выделенный для aa01.
Так, точка игры:
1 - Что является "локальной" памятью изученного объекта: Стопка "кучи"?
2 - если объект выделяется через новый, то это вне этой локальной памяти, т.е. это находится в другом месте на "куче"
3 - если объект выделяется "без нового", то это в локальной памяти.
4 - Если "локальная" память находится на стеке, то объект, выделенный без нового, находится на стеке, также.
5 - Если "локальная" память находится на "куче", то объект, выделенный без нового, находится на "куче" также, но все еще в локальной памяти.
Извините, у меня нет лучшего словаря для выражения тех понятий.
Test a;
Test *t = new Test;
a, и все его участники, находятся на стеке.
Объект, на который указывает t и все его участники, находится на "куче".
Указатель t находится на стеке.
Так как Вы использовали new
, это - все на "куче", сохраненной [более или менее] непрерывно в t
область памяти.
Так как Вы используете новый, Вы выделяете свой объект на "куче". Следовательно, каждый члены Теста, на который указывает t, находятся на "куче" также.
t находится на стеке. Объект в *t находится на "куче". Это содержит интервал и объект SomeClass друг рядом с другом в единице.
class MyClass {
int i;
MyInnerClass m;
MyInnerClass *p = new MyInnerClass();
}
MyClass a;
MyClass *b = new MyClass();
на стеке; его участники a.i и a.m (включая любых членов a.m) и a.p (указатель, не объект это указывает на) являются частью его и так также на стеке.
Объект, на который указывает a.p, находится на "куче".
Объект, на который указывает b, находится на "куче", включая всех ее участников; и так объект, на который указывает b.p.