почему при удалении статической ошибки в начале моей программы возникает ошибка переполнения стека? - PullRequest
1 голос
/ 28 февраля 2012

Я использую VC2010, и когда я пытаюсь отладить мою прогу с struct заменой static, я получаю

Необработанное исключение в 0x000f18e7 в ht_array.exe: 0xC00000FD: переполнение стека.

делает это в первой строке main

#define BUCKETS 64
#define B_ENTRIES 50000

void main(int argc, char **argv)
{
static fpinfo hash_table[BUCKETS][B_ENTRIES];
static tanker_record tr[100];
....

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Потому что 64 * 50000 * sizeof(fpinfo) байт явно слишком велико для вашего стека.При static переменная размещается в другой области памяти, где она подходит.

2 голосов
/ 28 февраля 2012

Удаление static означает, что hash_table теперь является переменной стека, размер которой слишком велик для стека.

static переменные хранятся в другом месте (см. Этот вопрос ).

...