C를 사용하여 android 용 네이티브 앱을 쓰고 있습니다. 어딘가에 간단한 C 코드를 작성하여 하위 문자열을 가져 오려는 평범한 일을하고 싶습니다. 이 코드입니다 : 내가 컴파일하고 PC에서이 코드를 실행, 내가 예상 결과를 얻을,하지만 안드로이드에서 실행할 때, 항상의 흐름을 손상 말에 이상한 문자가있는 경우문자열 끝에있는 이상한 문자 (0010)
char* get_part_allocated(const char* src, int start, int len)
{
LOGI("copying [%s] from [%d] len [%d]\n", src, start, len);
int nlen = len+1;
char* alloc = (char*)malloc(nlen*sizeof(char));
strncpy(alloc, src+start, len);
LOGI("result is: [%s]\n", alloc);
return alloc;
}
내 프로그램에 장애가 발생합니다! 나는 패딩 더 NULL을, 2 또는 3을 시도했지만 아무 것도 변경하지 않은
:
이는 로그 캣 출력의 스크린 샷입니다!
누군가가 어떤 내용인지 알고 어떻게 제거 할 수 있습니까?
죄송합니다. 개발자를 붙잡는 것을 멈추지 않는 동일한 오래된 실수 : D Thank you. – Mousa
그리고 메모에 대해 고맙지 만, 그것을 던지면 ndk 오류가 발생합니다 : "함수에서 'char * get_part_allocated (char const *, int, int)': 오류 : 'void *'에서 ' char * '[-fpermissive] "ndk가 C++ 컴파일러를 사용하고있는 것 같습니다. 맞습니까? – Mousa
올바른지, 캐스트는 C에서는 선택적이며 불필요하지만 C++에서는 필수 *입니다. 그것은 .cpp 대신에 .cpp를 컴파일하는 것을 의미 할 수도 있습니다. 보시다시피이 비교적 유해한 부작용이 있지만 다른 것이있을 수 있습니다. 컴파일러에서 .cpp에 대해 C를 사용하고 C++에 .cpp 파일을 사용하도록 할 수 있는지 확인하십시오. – usr2564301