반응형

C 251

C에서 2D 어레이를 0으로 설정하는 가장 빠른 방법?

C에서 2D 어레이를 0으로 설정하는 가장 빠른 방법? 나는 C에 큰 2D 배열을 반복해서 0으로 만들고 싶다.지금 내가 하는 일은 다음과 같다. // Array of size n * m, where n may not equal m for(j = 0; j < n; j++) { for(i = 0; i < m; i++) { array[i][j] = 0; } } 멤셋을 사용해봤어 memset(array, 0, sizeof(array)) 그러나 이는 1D 어레이에만 해당된다.2D 배열의 내용을 인쇄할 때 첫 번째 행은 0이 되는데, 그때 임의의 큰 숫자의 로드가 와서 충돌한다. memset(array, 0, sizeof(array[0][0]) * m * n); 어디에m그리고n 때문에 2차원 배열(의차원: 2차원..

programing 2022.04.22

C 또는 C++가 어레이 < 어레이 + SIZE>를 보증하는가?

C 또는 C++가 어레이 를 보증하는가? 배열이 있다고 가정해 보십시오. int array[SIZE]; 또는 int *array = new(int[SIZE]); C 또는 C++는 다음을 보장하는가?array < array + SIZE, 그리고 만약 그렇다면 어디에? 나는 언어 규격과 상관없이 많은 운영체제가 커널을 위해 가상 주소 공간의 상단을 예약함으로써 이 속성을 보증한다는 것을 이해한다.내 질문은 이것 또한 대다수의 구현에 의해서가 아니라 언어에 의해서도 보장되는 것인가 하는 것이다. 예를 들어 OS 커널이 낮은 메모리에 살고 경우에 따라 가장 높은 페이지의 가상 메모리를 사용자 프로세스에 제공한다고 가정해 보십시오.mmap익명 메모리 요청만약malloc또는::operator..

programing 2022.04.21

여러 아키텍처에 최적화된 NDK 코드를 생성하시겠습니까?

여러 아키텍처에 최적화된 NDK 코드를 생성하시겠습니까? 나는 낮은 수치의 크런치를 많이 하는 안드로이드용 C코드를 가지고 있다.생성된 코드가 모든 현재 Android 기기에서 실행될 뿐만 아니라 특정 칩셋에 대한 최적화를 활용하기 위해 어떤 설정(예: 내 Android.mk 및 Application.mk)을 사용해야 하는지 알고 싶다.나는 사용할 좋은 디폴트 Android.mk과 Application.mk 설정을 찾고 있으며, 나의 C 코드를 #ifdef 지점과 함께 낭비하지 않기를 원한다. 예를 들어 ARMv7에는 부동소수점 지침이 있고 일부 ARMv7 칩은 NEO 명령을 지원하며 기본 ARM은 이 두 가지를 모두 지원하지 않는다는 것을 알고 있다.NEON으로 ARMv7, NEON 없이 ARMv7, ..

programing 2022.04.21

현대 C와 C++에서는 f(void)가 더 이상 사용되지 않는가?

현대 C와 C++에서는 f(void)가 더 이상 사용되지 않는가? 이 질문에는 이미 다음과 같은 해답이 있다. C++ 또는 C에서 foo(void)와 foo()의 차이가 있는가? (4개 답변) C 및 C++에서 f()와 f(void)의 차이를 한 번, 그리고 전체적으로 이해 (4개 답변) 닫힌3년 전. 나는 현재 C++ 프로젝트에 사용된 오래된 C 코드를 리팩터링/수정하고 있으며, 정기적으로 다음과 같은 기능을 본다. int f(void) 다음과 같이 쓰고 싶다. int f() 일관성을 높이기 위해 코드베이스 전체에 걸쳐 (void)를 ()로 교체하지 않을 이유가 있는가, 아니면 내가 모르는 두 가지 사이에 미묘한 차이가 있는가? 구체적으로는 C++의 가상 멤버 함수를 다음과 같이 기술한다. virtua..

programing 2022.04.20

랜드()를 사용할 때 이 특정 색상 패턴을 얻는 이유는?

랜드()를 사용할 때 이 특정 색상 패턴을 얻는 이유는? 나는 다음과 같은 이미지 파일을 만들려고 했다. uint8_t raw_r[pixel_width][pixel_height]; uint8_t raw_g[pixel_width][pixel_height]; uint8_t raw_b[pixel_width][pixel_height]; uint8_t blue(uint32_t x, uint32_t y) { return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (x-y)%rand() : rand(); } uint8_t green(uint32_t x, uint32_t y) { return (rand()%2)? (x-y)%rand() : ((x*y%1024)%rand(..

programing 2022.04.20

sprintf/snprintf 중 어느 것이 더 안전한가?

sprintf/snprintf 중 어느 것이 더 안전한가? 다음 두 가지 옵션 중 어떤 옵션을 더 안전하게 사용할 수 있는지 알고 싶다. #define MAXLEN 255 char buff[MAXLEN + 1] sprintf(buff, "%.*s", MAXLEN, name) snprintf(buff, MAXLEN, "%s", name) 내가 이해한 것은 둘 다 같다는 것이다.추천 좀 해줘. 가장 은 장고 장고를 하는 이다.snprintf! size_t nbytes = snprintf(NULL, 0, "%s", name) + 1; /* +1 for the '\0' */ char *str = malloc(nbytes); snprintf(str, nbytes, "%s", name); C99년에snprintf문..

programing 2022.04.20

16진수 숫자 앞에 0x가 붙는 이유는?

16진수 숫자 앞에 0x가 붙는 이유는? 16진수 숫자는 왜 다음과 같이 접두사 앞에 붙는가?0x? 접두사의 용도는 이해하지만, 그 이유는 이해되지 않는다.0x선택되었다.단편:그0파서에게 상수(식별자/표시 단어가 아님)를 처리하고 있음을 알린다.숫자 베이스를 지정하기 위해서는 여전히 무언가가 필요하다.x자의적인 선택이야 긴 이야기:60년대에 널리 보급된 프로그래밍 번호 시스템은 십진수 및 팔진수 — 메인프레임은 바이트당 12, 24 또는 36비트를 가졌으며, 이는 3 = log2(8)로 잘 구분된다. BCPL 언어가 구문을 사용함8 1234팔분의 일수로Ken Thompson이 BCPL로부터 B를 만들었을 때, 그는 B를 사용했다.0접두사를 붙이다왜냐하면 대단하다. 현재 정수 상수는 항상 단일 토큰으로 구..

programing 2022.04.19

문자열의 해시 함수

문자열의 해시 함수 C 언어로 해시 테이블을 작업 중이고 문자열 해시함수를 테스트하고 있어. 내가 시도한 첫 번째 기능은 아스키 코드를 추가하고 modulo를 사용하는 것이다.% 100( ) 그러나 나는 첫 번째 데이터 테스트에서 나쁜 결과를 얻었다: 130 단어에 40건의 충돌. 최종 입력 데이터는 8000개의 단어를 포함할 것이다.해시 테이블은 다음과 같이 선언된다.int table[10000]그리고 .txt 파일에 단어의 위치가 포함되어 있다. 해싱 문자열에 가장 적합한 알고리즘은? 해시 테이블의 크기를 결정하는 방법은? 나는 댄 번스타인의 좋은 결과를 얻었다. unsigned long hash(unsigned char *str) { unsigned long hash = 5381; int c; wh..

programing 2022.04.18

어떻게 gcc가 C의 일부 문구를 최적화하는 것을 방지할 수 있는가?

어떻게 gcc가 C의 일부 문구를 최적화하는 것을 방지할 수 있는가? 페이지를 더럽히기 위해(페이지 테이블 항목의 더티 비트로 전환) 다음과 같이 페이지의 첫 번째 바이트를 터치한다. pageptr[0] = pageptr[0]; 그러나 실제로 gcc는 죽은 상점들을 제거함으로써 그 진술을 무시할 것이다.gcc가 최적화하는 것을 방지하기 위해 다음과 같이 다시 작성한다. volatile int tmp; tmp = pageptr[0]; pageptr[0] = tmp; 그 속임수는 효과가 있는 것 같지만, 다소 추하다.같은 효과를 내는 지시나 구문이 있는지 알고 싶다.그리고 나는 a를 사용하고 싶지 않다.-O0플래그, 왜냐하면 그것은 또한 큰 성능 저하를 가져올 것이기 때문이다.사용할 수 있다 #pragma ..

programing 2022.04.18

C에서 배열의 최대 크기는?

C에서 배열의 최대 크기는? 나는 하드웨어가 프로그램 실행 중에 할당된 메모리 양을 제한할 것이라고 알고 있다.그러나 나의 질문은 하드웨어와 무관하다.메모리 양에 제한이 없다고 가정하면 어레이에 제한이 없을까?C에서 배열의 크기에 대한 고정된 제한은 없다. 어레이 개체를 포함한 단일 개체의 크기는 다음과 같이 제한됨SIZE_MAX , 타입의 최대대.size_t, 어느 것이 의 결과인가.sizeof교환원의(C 표준이 다음보다 큰 물체를 허용하는지 여부는 완전히 명확하지 않다.SIZE_MAX바이트, 그러나 실제로는 이러한 개체가 지원되지 않는다. 각주를 참조하십시오.)이후SIZE_MAX상한을 부과하는 어떤 프로그램으로도 수정할 수 없는 구현에 의해 결정된다.SIZE_MAX단日의바that (더 수 (이것은 상..

programing 2022.04.18
반응형