반응형

c 78

C에서 항상 포인터를 해제할 수 없음

C에서 항상 포인터를 해제할 수 없음 A을(를) 어떻게 해제할 수 있는가?const char*? 다음을 사용하여 새 메모리를 할당했다.malloc, 그리고 내가 그것을 해제하려고 할 때 나는 항상 "호환할 수 없는 포인터 유형"이라는 오류를 받는다. 이것을 일으키는 코드는 다음과 같다. char* name="Arnold"; const char* str=(const char*)malloc(strlen(name)+1); free(str); // error here 여러 사람이 정답을 올렸는데 웬일인지 자꾸 삭제한다.일정하지 않은 포인터로 던져야 한다.free에 걸리다void*, a가 아니다.const void*: free((char*)str); 코드가 바뀌었어. 다음 내용: char* name="Arnold..

Programing 2022.04.21

왜 1,000,000,000을 1000*1000*1000으로 C에 쓰는가?

왜 1,000,000,000을 1000*1000*1000으로 C에 쓰는가? 애플이 만든 코드에는 다음과 같은 선이 있다. CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 ) 표현해야 할 이유가 있는가?1,000,000,000로서1000*1000*1000? 그거 좋지1000^3그 일 때문에?사용하지 않는 이유가 있다.1000 * 1000 * 1000. 16비트 포함int,1000 * 1000넘치다그래서 사용 1000 * 1000 * 1000휴대성을 떨어뜨리다 32비트 포함int, 다음 코드 첫 줄이 넘친다. long long Duration = 1000 * 1000 * 1000 * 1000; // overflow long long Duration = ..

Programing 2022.04.21

왜 float에 대한 지정자가 printf에 정의되지 않았는가?

왜 float에 대한 지정자가 printf에 정의되지 않았는가? 그럴 수도 있었을 것 같은데, (적어도 C99에는) 길이 수식어가 적용 가능한 것 같다.int:%hhd%hd%ld그리고%lld심술궂다signed charshortlong그리고long long에 적용되는 길이 수식어도 있다.double:%Lf수단long double. 문제는 왜 그들이 누락했는가 하는 것이다.float대로라면, 였을 이다.%hf. ISO C11 표로 ,로터,6.5.2.2 Function calls /6그리고/7, 표현식의 맥락에서 함수 호출에 대해 논함(나의 강조): 6/ 호출된 함수를 나타내는 식이 프로토타입을 포함하지 않는 유형을 갖는 경우, 각 인수에 정수 승진이 수행되며, 유형 부동이 있는 인수는 2배로 승격된다. 이를..

Programing 2022.04.20

장치 드라이버 쓰기를 어떻게 시작해야 하는가?

장치 드라이버 쓰기를 어떻게 시작해야 하는가? 휴관. 이 질문은여론에 근거한그것은 현재 답을 받아들이고 있지 않다. 이 문제를 개선하고 싶으십니까?이 게시물을 편집하여 사실과 인용문으로 답변할 수 있도록 질문을 업데이트하십시오. 4년 전에 문을 닫았다. 이 질문 개선 나는 기기 드라이버 쓰는 법을 배우고 싶어. 왜냐하면 재미있을 것 같아.나는 Mac OS X Macbook을 사용하지만, Ubuntu 기계(Mac Min에서 실행)도 있다.나는 C에 꽤 익숙하고 현재 이 책을 읽고 있다.나는 맥 데브 센터와 같은 온라인 링크를 몇 개 찾았다.재미있을 것 같아서 하는 거야.내가 쓴 소프트웨어 때문에 하드웨어가 작동하는 것을 보면 정말 만족스러울 것 같아. 내가 원하는 것은 몇 가지 팁이나 조언과 지침이고, 드..

Programing 2022.04.20

C의 "자유"는 왜 자유로워지는 바이트 수를 가져가지 않는가?

C의 "자유"는 왜 자유로워지는 바이트 수를 가져가지 않는가? 확실히 하자면:난 그걸 알아.malloc그리고freeC 라이브러리에서 구현되며, 이 라이브러리는 대개 OS에서 메모리 덩어리를 할당하고 애플리케이션에 더 적은 양의 메모리를 배포하기 위해 자체 관리를 하며 할당된 바이트 수를 추적한다.이 질문은 자유가 어떻게 자유로워야 하는지 아는 것이 아니다. 오히려 그 이유를 알고 싶다.free애초에 이런 식으로 만들어졌지낮은 수준의 언어인 나는 C 프로그래머에게 어떤 메모리가 할당되었는지뿐만 아니라 얼마나 많이 할당되었는지 추적하도록 요청하는 것이 지극히 합리적일 것이라고 생각한다(사실, 나는 일반적으로 어쨌든 나는 결국 멀로케이션된 바이트 수를 추적하게 된다는 것을 알게 된다).바이트 수를 명시적으로 ..

Programing 2022.04.19

coudamalloc()의 사용.왜 이중 포인터가 되는 거지?

coudamalloc()의 사용.왜 이중 포인터가 되는 거지? 나는 현재 CUDA를 배우기 위해 http://code.google.com/p/stanford-cs193g-sp2010/의 튜토리얼 예제를 검토하고 있다.강등되는 코드__global__기능은 다음과 같다.CPU에 1개, GPU에 1개 등 2개의 어레이를 만들어 GPU 어레이를 숫자 7로 채운 뒤 GPU 어레이 데이터를 CPU 어레이에 복사하면 된다. #include #include __global__ void kernel(int *array) { int index = blockIdx.x * blockDim.x + threadIdx.x; array[index] = 7; } int main(void) { int num_elements = 256;..

Programing 2022.04.19

C에서 문자열을 올바르게 비교하려면 어떻게 해야 하는가?

C에서 문자열을 올바르게 비교하려면 어떻게 해야 하는가? 사용자가 단어나 문자를 입력하여 저장한 후 사용자가 다시 입력할 때까지 인쇄할 수 있도록 프로그램을 구하여 프로그램을 종료하려고 한다.내 코드는 이렇게 생겼어: #include int main() { char input[40]; char check[40]; int i=0; printf("Hello!\nPlease enter a word or character:\n"); gets(input); /* obsolete function: do not use!! */ printf("I will now repeat this until you type it back to me.\n"); while (check != input) { printf("%s\n", i..

Programing 2022.04.18

gcc는 왜 구조체로부터 추측적으로 적재할 수 있는가?

gcc는 왜 구조체로부터 추측적으로 적재할 수 있는가? 결함이 발생할 수 있는 gcc 최적화 및 사용자 코드 표시 예제 아래 코드 조각의 'foo' 함수는 구조체 멤버 A 또는 B 중 하나만 로드된다. 적어도 그것은 최적화되지 않은 코드의 의도다. typedef struct { int A; int B; } Pair; int foo(const Pair *P, int c) { int x; if (c) x = P->A; else x = P->B; return c/102 + x; } gcc -O3의 내용은 다음과 같다. mov eax, esi mov edx, -1600085855 test esi, esi mov ecx, DWORD PTR [rdi+4] B** cmovne ecx, DWORD PTR [rdi] A..

Programing 2022.04.18

기능 포인터를 포맷하는 방법?

기능 포인터를 포맷하는 방법? ANSI C에서 함수에 대한 포인터를 인쇄할 수 있는 방법이 있는가?물론 이것은 당신이 기능 포인터를 보이드 포인터에 던져야 한다는 것을 의미하지만, 그것은 불가능해 보입니까? #include int main() { int (*funcptr)() = main; printf("%p\n", (void* )funcptr); printf("%p\n", (void* )main); return 0; } $gcc -ansi -pedantic -Wall test.c -o test test.c: 함수 'main'에서: test.c:6: warning: ISO C에서는 기능 포인터를 개체 포인터 유형으로 변환하는 것을 금지함 test.c:7: warning: ISO C에서는 기능 포인터를 개..

Programing 2022.04.17

이 Valgrind 경고의 의미는? - 경고 설정 주소 범위(Perms

이 Valgrind 경고의 의미는? - 경고 설정 주소 범위(Perms Valgrind에 대항하여 프로그램을 실행하던 중 다음과 같은 경고를 받았다. Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) 몇 번 구글링을 한 후에 나는 여기서 그것이 a라는 것을 알았다.Diagnostic message, mostly for ..

Programing 2022.04.17
반응형