Articles of + +

Por que um grande array local falha meu programa, mas um global não?

Programa com grande matriz global: int ar[2000000]; int main() { } Programa com grande matriz local: int main() { int ar[2000000]; } Quando eu declaro um array com tamanho grande na function main, o programa trava com “SIGSEGV (falha de segmentação)”. No entanto, quando o declaro como global, tudo funciona bem. Por que é que?

1D ou 2D array, o que é mais rápido?

Estou precisando de representar um campo 2D (eixos x, y) e enfrento um problema: Devo usar uma matriz 1D ou uma matriz 2D? Eu posso imaginar, que recalcular os índices para matrizes 1D (y + x * n) poderia ser mais lento do que usar matriz 2D (x, y), mas eu poderia imaginar que 1D […]

O que acontece se eu definir um array de tamanho 0 em C / C ++?

Apenas curioso, o que realmente acontece se eu definir um array de tamanho zero int array[0]; em código? O GCC não reclama nada. Programa de Amostra #include int main() { int arr[0]; return 0; } Esclarecimento Na verdade, estou tentando descobrir se as matrizes de comprimento zero inicializadas dessa maneira, em vez de serem apontadas […]

Por que os compiladores C e C ++ permitem comprimentos de array em assinaturas de function quando elas nunca são aplicadas?

Isto é o que eu encontrei durante o meu período de aprendizagem: #include using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = “abc”; int c = dis(b); cout << c; return 0; } Então, na variável int dis(char a[1]) , […]

Arquiteturas exóticas que os comitês de padrões se preocupam

Eu sei que os padrões C e C ++ deixam muitos aspectos da implementação da linguagem definidos apenas porque se houver uma arquitetura com outras características, seria muito difícil ou impossível escrever um compilador padrão em conformidade para isso. Eu sei que 40 anos atrás, qualquer computador tinha sua própria especificação única. No entanto, não […]

Índice de matriz fora do limite em C

Por que C diferencia-se no caso de um índice de array fora do limite #include int main() { int a[10]; a[3]=4; a[11]=3;//does not give segmentation fault a[25]=4;//does not give segmentation fault a[20000]=3; //gives segmentation fault return 0; } Eu entendo que ele está tentando acessar a memory alocada para processar ou thread no caso de […]