Perguntas com a marcação «c»

C é uma linguagem de programação de uso geral usada para programação do sistema (SO e incorporado), bibliotecas, jogos e plataformas cruzadas. Essa tag deve ser usada com perguntas gerais sobre o idioma C, conforme definido na norma ISO 9899 (a versão mais recente, 9899: 2018, exceto quando especificado em contrário - também tag as solicitações específicas da versão com c89, c99, c11, etc.). C é diferente de C ++ e não deve ser combinado com a tag C ++, sem um motivo racional.

4
Por que memmove é mais rápido que memcpy?
Estou investigando pontos de acesso de desempenho em um aplicativo que gasta 50% do tempo no memmove (3). O aplicativo insere milhões de inteiros de 4 bytes em matrizes classificadas e usa memmove para deslocar os dados "para a direita" a fim de liberar espaço para o valor inserido. Minha …
89 c++  c  performance  memory 

3
O que exatamente é a regra “como se”?
Como diz o título, O que exatamente é a regra "como se"? Uma resposta típica que se obteria é: A regra que permite toda e qualquer transformação de código que não altere o comportamento observável do programa De vez em quando, continuamos obtendo comportamentos de certas implementações que são atribuídas …
89 c++  c  optimization  c++-faq  as-if 

4
PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init (& mutex, param)
Existe alguma diferença entre pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; Ou pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); Estou seguro o suficiente se usar apenas o primeiro método? NOTA: Minha pergunta se refere principalmente a programas muito pequenos onde, no máximo, o que farei é conectar vários clientes a um servidor e resolver …
89 c  ubuntu  pthreads  mutex 


4
GDB: interromper se o valor da variável for igual
Gosto de fazer o GDB definir um ponto de interrupção quando uma variável é igual a algum valor que defini, tentei este exemplo: #include <stdio.h> main() { int i = 0; for(i=0;i<7;++i) printf("%d\n", i); return 0; } Saída do GDB: (gdb) break if ((int)i == 5) No default breakpoint address …
89 c  gdb 


3
Threadsafe vs reentrante
Recentemente, fiz uma pergunta com o título "Is malloc thread safe?" , e dentro disso perguntei: "Malloc é reentrante?" Fiquei com a impressão de que todos os reentrantes são seguros para discussão. Esta suposição está errada?


2
O que são vdso e vsyscall?
eu fiz sudo cat /proc/1/maps -vv Estou tentando entender a saída. Posso ver muitas bibliotecas compartilhadas sendo mapeadas para o segmento de mapeamento de memória conforme o esperado. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 …
89 c  linux  linux-kernel  kernel  vdso 


9
Por que a +++++ b não funciona?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } Este código fornece o seguinte erro: erro: lvalue necessário como operando de incremento Mas se eu colocar espaços em toda a extensão a++ +e ++b, funcionará bem. int main () { int a = 5,b = …
88 c  lvalue 

13
Como é que este programa funciona?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } Ele exibe um 0!! Como isso é possível? Qual é o raciocínio? Eu coloquei deliberadamente um %dna printfdeclaração para estudar o comportamento de printf.
88 c++  c  memory  printf  endianness 

7
Como o kernel do Linux pode se compilar?
Não entendo muito bem o processo de compilação do kernel Linux quando instalo um sistema Linux em minha máquina. Aqui estão algumas coisas que me confundiram: O kernel é escrito em C, entretanto, como o kernel foi compilado sem um compilador instalado? Se o compilador C for instalado em minha …

8
Maneira eficiente de pesquisar um elemento
Recentemente, tive uma entrevista, onde me fizeram uma pergunta " investigativa ". A questão era: Assuma que existe uma matriz de números inteiros (positivos), dos quais cada elemento é ou +1ou -1em relação aos seus elementos adjacentes. Exemplo: array = [4,5,6,5,4,3,2,3,4,5,6,7,8]; Agora procure 7e retorne sua posição. Eu dei esta …


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.