C>#include"stdafx.h"
C>void func()
C>{
C> char buffer[16]; // массив из 16 байт выделяется в памяти стека
C>}
C>int _tmain(int argc, _TCHAR* argv[])
C>{
C> char* buffer = static_cast<char*> ( malloc(4) ); // выделение 4 байт памяти в куче и присвоение указателю на char
C> func();
C> char buffer[4]; // массив из 4 байт
C> return 0;
C>}
C>
C>Поправьте если я не прав в коде. Вопрос: в какой памяти выделяется массив из 4 байт.
Если исправить ошибку переопределения переменной buffer, то будет на стеке.
Это же очевидно. То же самое что и внутри функции func()
Или хотел какой-то хитрый финт ушами сделать ? Так компилятор не разрешит переопределить два раза переменную с одним именем.
Здравствуйте, Evgeniy Skvortsov, Вы писали: ES>Здравствуйте, cupuyc., Вы писали: ES>
Скрытый текст
C>>
C>>#include"stdafx.h"
C>>void func()
C>>{
C>> char buffer[16]; // массив из 16 байт выделяется в памяти стека
C>>}
C>>int _tmain(int argc, _TCHAR* argv[])
C>>{
C>> char* buffer = static_cast<char*> ( malloc(4) ); // выделение 4 байт памяти в куче и присвоение указателю на char
C>> func();
C>> char buffer[4]; // массив из 4 байт
C>> return 0;
C>>}
C>>
C>>Поправьте если я не прав в коде. Вопрос: в какой памяти выделяется массив из 4 байт. ES>Если исправить ошибку переопределения переменной buffer, то будет на стеке. ES>Это же очевидно. То же самое что и внутри функции func() ES>Или хотел какой-то хитрый финт ушами сделать ? Так компилятор не разрешит переопределить два раза переменную с одним именем.
мой косяк. там должен быть buffer1.
получается функция main как обычная функция и хранит свои данные в стеке ?
Здравствуйте, cupuyc., Вы писали:
C>потдерживаю, где хранится argv? теперь массив из 4 байт хранится в глобальной памяти (статической). Вот только что это за память и где находится? Здесь.
C>потдерживаю, где хранится argv? теперь массив из 4 байт хранится в глобальной памяти (статической). Вот только что это за память и где находится?
А это неважно.
в какой-то памяти.
Вообще, там, где libc выделит.
И действительно, это не важно.
можно считать, что это делается в стеке до входа в main.
А можно считать, что до входа в main стека вообще никакого ещё нет.