C 61

malloc failure는 어떻게 감지합니까?

malloc failure는 어떻게 감지합니까? 다음을 확인할 수 있는 휴대용 방법은 무엇입니까?malloc0이 아닌 메모리 블록을 할당하지 못했습니까?싱글 유닉스 사양에 따르면,malloc돌아올 것입니다NULL그리고 세트errno실패했을 때는저는 항상 이렇게 합니다. tok = malloc( sizeof( char ) * ( strlen(tc) + 1 ) ); if( tok == NULL ) { /* Malloc failed, deal with it */ } 어떤 분들은.tok = (type) malloc( ... )하지만 결과물은 분명히 몇 가지 끔찍한 오류들을 덮고 있기 때문에 당신은 그 결과를 캐스팅해야 합니다.제가 조사를 좀 해서 정확히 어떤 것들인지 알아낼 수 있는지 알아보겠습니다. 편집: m..

programing 2023.10.12

해당 루프의 함수 내에서 루프를 탈출하는 것

해당 루프의 함수 내에서 루프를 탈출하는 것 있습니다.for해당 루프에서 호출되는 함수 내에서 루프가 발생합니다.그냥 함수가 값을 반환하게 한 다음 특정 값에 대해 확인한 후 깨지는 것이 가능하다는 것은 알고 있지만, 함수 내에서 직접 해보고 싶습니다. 이것은 제 기능의 기능 서명을 다음과 같이 하도록 요구하는 특정 하드웨어에 대해 사내 라이브러리를 사용하고 있기 때문입니다. void foo (int passV, int aVal, long bVal) 반품 가격을 사용하지 않는 것은 매우 나쁜 관행이라는 것을 알고 있지만, 사정이 여의치 않으니, 부디 참아주시기 바랍니다. 다음과 같은 예를 생각해 봅니다. #include void foo (int a) { printf("a: %d", a); break; }..

programing 2023.10.12

복잡한 함수 선언을 어떻게 이해해야 합니까?

복잡한 함수 선언을 어떻게 이해해야 합니까? 복잡한 선언을 따르는 것을 어떻게 이해할 수 있습니까? char (*(*f())[])(); char (*(*X[3])())[5]; void (*f)(int,void (*)()); char far *far *ptr; typedef void (*pfun)(int,float); int **(*f)(int**,int**(*)(int **,int **)); 다른 사람들이 지적한 것처럼 cdecl은 그 일에 적합한 도구입니다. cdecl의 도움 없이 그런 선언을 이해하고 싶다면, 안쪽에서 오른쪽에서 왼쪽으로 읽어보세요. 목록에서 하나의 임의 예제 가져오기 선언/정의되는 식별자(그리고 가장 안쪽의 식별자)인 X에서 시작합니다. char (*(*X[3])())[5]; ^ X..

programing 2023.10.12

논증 평가란 무엇입니까?

논증 평가란 무엇입니까? 허버트 쉴트는 이렇게 말합니다. 예를 들어 코드 크기를 최소화해야 하거나 인수를 두 번 이상 평가해서는 안 되는 경우 등과 같이 실제 함수를 함수 매크로 대신 사용해야 합니다. "논쟁은 한 번 이상 평가해서는 안 된다"는 것은 무엇을 의미합니까?매크로를 사용하여 최대 두 개의 값을 계산해 보겠습니다. #define MAX(a, b) ((a) < (b) ? (a) : (b)) 그런 다음 이렇게 사용합니다. int x = 5; int y = 10; int max = MAX(x++, y++); 그런 다음 매크로가 다음으로 확장됩니다. int max = ((x++) < (y++) ? (x++) : (y++)); 보다시피, 두 개 중 하나에 대한 증분 연산이x아니면y통과한 각 인수를 한 ..

programing 2023.10.12

프로그래밍 In C + Win API: Windows 7(윈도우 7)에서 컨트롤을 찾도록 하는 방법은 무엇입니까?

프로그래밍 In C + Win API: Windows 7(윈도우 7)에서 컨트롤을 찾도록 하는 방법은 무엇입니까? 저는 C++나 C#이 아닌 C와 WinAPI를 엄격히 프로그래밍하고 있습니다.저는 초보자이고 컨트롤 등을 그리는 법을 배우고 있습니다.이 문제는 제가 윈도우나 명령 버튼과 같은 다른 컨트롤을 만들 때 윈도우 네이티브 모양을 갖게 된다는 것입니다.이것을 보십시오. 그러나 Windows 7(윈도우 7)의 명령 버튼은 다음과 같습니다. 이제 어떻게 하면 제 프로그램에서 명령 버튼을 그렇게 만들 수 있을까요?그게 가능하긴 해요?참고로 http://zetcode.com/gui/winapi/ 이 자습서를 따르고 있습니다. 감사해요.컨트롤은 테마(시각적 스타일)가 개발되기 전인 1990년대를 이렇게 돌아..

programing 2023.10.12

'*(*(&array + 1)) - 1)'은 자동 배열의 마지막 요소를 얻기 위해 사용해도 안전합니까?

'*(*(&array + 1)) - 1)'은 자동 배열의 마지막 요소를 얻기 위해 사용해도 안전합니까? 크기를 알 수 없는 자동 배열의 마지막 요소를 구하려고 합니다.나는 내가 사용할 수 있다는 것을 알고 있습니다.sizeof연산자는 배열의 크기를 얻고 그에 따라 마지막 요소를 얻습니다. .*((*(&array + 1)) - 1)안전합니까? 좋아요: char array[SOME_SIZE] = { ... }; printf("Last element = %c", *((*(&array + 1)) - 1)); int array[SOME_SIZE] = { ... }; printf("Last element = %d", *((*(&array + 1)) - 1)); 기타아니, 그건 아니야. &array입니다에 입니다.c..

programing 2023.10.12

printfinside CUDA __global__ 기능

printfinside CUDA __global__ 기능 저는 현재 GPU에 매트릭스 곱셈을 작성하고 있으며 코드를 디버그하고 싶습니다. 하지만 장치 기능 내부에서 printf를 사용할 수 없기 때문에 해당 기능 내부에서 무슨 일이 일어나고 있는지 확인할 수 있는 다른 방법이 있을까요?현재 사용 중인 기능: __global__ void MatrixMulKernel(Matrix Ad, Matrix Bd, Matrix Xd){ int tx = threadIdx.x; int ty = threadIdx.y; int bx = blockIdx.x; int by = blockIdx.y; float sum = 0; for( int k = 0; k < Ad.width ; ++k){ float Melement = Ad.e..

programing 2023.10.07

GCC의 '__builtin_malloc()'는 평이한 'malloc()'에 비해 어떤 개선점을 제공합니까?

GCC의 '__builtin_malloc()'는 평이한 'malloc()'에 비해 어떤 개선점을 제공합니까? 저는 최근에 C 라이브러리의 메모리 관리 기능 중 일부에 GCC의 내장 기능에 대해 알게 되었습니다. 특히__builtin_malloc()및 관련 기본 제공(https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html) 참조).에 대해 알게되면__builtin_malloc(), 일반적으로 성능 향상을 제공하는 것이 어떻게 작동할 수 있는지 궁금했습니다.malloc()관련 도서관 일과 예를 들어 함수가 성공할 경우 일반 호출을 통해 해제할 수 있는 블록을 제공해야 합니다.free()포인터가 자유로워질 수도 있기 때문에__builtin_malloc()아니면__bu..

programing 2023.10.07

다른 경우가 아니라 반품/계속 문을 사용해야 합니까?

다른 경우가 아니라 반품/계속 문을 사용해야 합니까? C, C++, C#에서 함수나 루프 문 내부의 조건을 사용할 때는 가능한 한 빨리 continue나 return 문을 사용하고 if-else 문의 다른 가지를 없애는 것이 가능합니다.예를 들어, while( loopCondition ) { if( innerCondition ) { //do some stuff } else { //do other stuff } } 된다 while( loopCondition ) { if( innerCondition ) { //do some stuff continue; } //do other stuff } 그리고. void function() { if( condition ) { //do some stuff } else { /..

programing 2023.10.07

memcpy의 내부 구현은 어떻게 이루어집니까?

memcpy의 내부 구현은 어떻게 이루어집니까? 표준 C 기능 'memcpy'는 어떻게 작동합니까?RAM의 (큰) 청크를 RAM의 다른 영역에 복사해야 합니다.(이동 명령으로) 조립 시 RAM에서 RAM으로 바로 이동할 수 없다는 것을 알고 있기 때문에 복사 시 중간 메모리로 CPU 레지스터를 사용하는 것이 아닐까요? 하지만 어떻게 복사되는 거지?블록 단위(블록 단위로 어떻게 복사합니까?), 개별 바이트(char) 또는 가장 큰 데이터 유형(long long double's로 복사 - 내 시스템에서 12바이트). 편집: RAM에서 RAM으로 직접 데이터를 이동할 수 있습니다. 저는 조립 전문가가 아니며 조립에 대해 배운 것은 RAM에서 RAM으로 이동할 수 없다는 이동 명령에 대한 섹션에 언급된 이 문서..

programing 2023.10.07