qt 버그천지

익명 사용자의 이미지

qt4.8.6 32 에 vs2010 물려서 작업하는데
아우 버그천지

include string.h
 
 
...
QString tmpqstr("abcdefghijk");
std::string tmpstdstr;
tmpstdstr = tmpstr.toStdString(); // error !??

이것뿐만 아니라

qt creator 에서 qwidget 프로젝트 만들어서 바로 빌드하고 디버깅하면
종료할때 에러남
창 다 닫힌다음에 나는에러라 소스차원에서 어떻게 해볼수가 없음

죄송합니다
스트레스를 정상적으로 풀어야 하는데
시간이 없어서 여따 끄적여봤습니다
왜 c99 지원도 안하는 vs2010 으로 프로젝트 시작했는지
qt면 이딴 고물컴파일러 말고 gcc 해도 되는데 아우진짜
아죄송합니다
그만끄적여야 하는데
이프로젝트 시작하고 끊었던 담배를 다시 피웠습니다
근데 왜 윈도우즈 환경에서 크로스플랫폼이다 뭐다하는 리눅스 라이브러리들 죄다 끌어다
쓴건지. cygwin 으로 컴파일하면 이해가 가는데 vs2010 으로
libiconv 컴파일 쉽나요?
죄송합니다
그만할께요
못하는사람이라 좋은회사 못가고, 안좋은 프로젝트 맡게되어서
아근데 왜 vs2010 으로.. 갖다쓴 라이브러리들 죄다 리눅스태생들.. 제대로 컴파일되어잇는
라이브러리도 없고, 이거 소스받아다가 하나하나 다 수정해가면서 컴파일하고
아우씨 진짜

익명 사용자의 이미지

char* tmp = new char[49];
이리했는데 char 배열이 63개가 생성됨.
memset(tmp, 0x0, 63);
// 63 이라고 칩시다.. 이왕 63개 만든거..
strncpy(tmp, "abcde", 5);
// 이리하면 abcde다음에 0 이 안들어있고 쓰레기값으로 꽉 채워노음..
// n만큼만 복사하는게 strncpy 인걸로 배웠습니다만...

김정균의 이미지

strncpy 는 일단 QT의 api 가 아닙니다. 그리고 bug 탓 하기 전에 manual을 먼저 제대로 보셔야 할 것 같습니다.

The strncpy() function is similar, except that at most n bytes of src are copied. Warning: If there is no null byte among the first n bytes of src, the string placed in dest will not be null-terminated.
익명 사용자의 이미지

strncpy 가 어느헤더에 정의되있는지 모를사람이 누가 있겠습니까? 남 질책하시기 전에 vc2010 물려쓴다고 위에 적어논걸 제대로 보셔야 할 것 같습니다.

세벌의 이미지

나는 모르는데요? strncpy 가 어느 헤더에 정의되어 있는지.
이 댓글 쓰신 익명 사용자 님과 첫 글 쓰신 익명 사용자 님이 같은 사람인지 다른 사람인지도 모르겠어요.

백연구원의 이미지

메뉴얼 보라고 하신 이유를 아직 잘 모르시는듯 (...) 빨간펜 선생님처럼 밑줄까지 되어 있는데요.


소곤소곤

raymundo의 이미지

저도 처음에 읽으면서 이 생각을 했습니다만... strncpy 는 n보다 긴 문자열이 주어지면 널 캐릭터를 붙이지 않는다는 것.

그런데 위에 보면 strncpy 전에 memset 으로 0으로 채우셨다니까 이 부분에서 문제는 없긴 하죠.

좋은 하루 되세요!

김정균의 이미지

음.. 그렇군요. strncpy 의 덫에 빠져서 앞에서 memset 을 한걸 못봤네요 :) memset 으로 0 을 채웠는데 strncpy 후에 gabage가 들어 갔다면 흥분할 만한 일이 맞으시네요.

안경을 써야겠습니다. 제대로 안보이네요 ㅠㅠ

jick의 이미지

> char* tmp = new char[49];
> 이리했는데 char 배열이 63개가 생성됨.

...이라 하셨는데 저기서 char 배열이 "63개가 생성되었다"라는 사실(?)은 도대체 어떻게 알게 된 걸까요?

C++ 표준에 따르면 그런 걸 알 수 있는 방법이 없을 텐데요...

익명 사용자의 이미지

qt library api 만 보았을땐 우와.. 정말편하겠다, 라이브러리 정말 좋구나 이런생각이 들었는데.. QString 만해도 버그천지.. 이게 컴파일러 버근지 라이브러리 버근지.. 뭐 이따군지.. 아우 난 오늘 또 야근.. 껍데기만 qt로 하고 내용은 전부 pure c++로 해야겠슴

세벌의 이미지

여기서 화내고 욕해 봤자 별도움 안 될 거예요.
Qt 가 그리 문제가 많다면, kldp 가 아니라 Qt 공식사이트에 항의하셔요...
좋은 해결책이 이미 있을수도 있습니다.

DarkSide의 이미지

tmpstr.toStdString() 은 tmpqstr.toStdString() 을 잘못 적으신거죠?
아니면, 당연히 오류가 나겠죠.

일단 자신의 코드에서의 문제를 먼저 살펴 보시는게 좋을 것 같습니다.

익명 사용자의 이미지

tmpqstr.toStdString() 을 잘못적은거고 소스엔 당연히 제대로적었습니다. 회사에서 조용히 개발만하면 언론플레이하고 정치질하고해서 지잘못도 남탓으로 몰고가는사람들 천지인데, 오프라인에서도 이게 내 탓이 되네? 아우 내가 개발하러 왔지 정치질하고 언론플레이하고 편가르기 하려고 회사왔나... 이놈의 회사를 내 당장.. 잘다녀야지

세벌의 이미지

회사도 잘 다니시고...
자기가 잘못한 걸 Qt 탓 하지 마세요.

익명 사용자의 이미지

관리자가 활동을 하고 있다면 이 스레드를 잠가 주시기 바랍니다.