代码在Windows XP上的malloc()崩溃

Dre*_*692 0 c malloc

我的简化代码如下所示:

 char decrypted[64] = "P@ssw0rd                ";
 int realsize = 8;
  realloc(decrypted, realsize);

  char *dec2 = (char *) malloc(realsize+1); // Exe crashes at this point
Run Code Online (Sandbox Code Playgroud)

我猜它与char*dec2有关 ,但这只是因为某些原因崩溃了Win XP.

Ale*_*nze 7

你不能没有realloc()分配malloc()calloc()realloc().

  • ...因为在堆栈数组上调用`realloc()`是"未定义的行为" - 请参阅http://pubs.opengroup.org/onlinepubs/009696899/functions/realloc.html - 所以C运行时可以做任何事情想要,包括*不*崩溃. (4认同)
  • 纯粹的运气,没有别的.您尝试做的事情被语言标准归类为"未定义的行为",您无法对其进行推理.UB是坏的,要避免,除了知道何时构成UB之外,你需要了解它. (3认同)