fork(1) download
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. char m_szVal1[100] = {0};
  6. char m_szVal2[100] = {0};
  7.  
  8. char* Sum() {
  9. char szTmp[200];
  10. strcpy(szTmp, m_szVal1);
  11. strcat(szTmp, m_szVal2);
  12. return szTmp;
  13. }
  14.  
  15. void test() {
  16. char* const p=Sum();//вот тут мы получили этот абсолютно неверный указатель
  17.  
  18. //но его сразу нужно забрать, а не потом когда-нибудь
  19. if (NULL == p)
  20. throw "Идите в *опу"; //т.е. если указатель не валидный, дальше вообще никаких переговоров
  21.  
  22. //или сразу его забираем себе
  23. const std::string wowPtr(p);//все - забрали указатель
  24.  
  25. cout << "wowPtr=" << wowPtr;
  26. }
  27.  
  28. int main() {
  29. memset(m_szVal1, '1', 99);
  30. memset(m_szVal2, '2', 99);
  31. test();
  32. }
  33.  
Runtime error #stdin #stdout #stderr 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
terminate called after throwing an instance of 'char const*'