PS C:\Users\Ivan\Desktop\maketest> ./main.exe
Arr size: 4. Fine. Arr size: 8. Fine. Arr size: 12. Fine. Arr size: 16. Fine. Arr size: 20. Fine. Arr size: 24. Fine. Arr size: 28. Fine. Arr size: 32. Fine.
Arr size: 36. Fine. Arr size: 40. Fine. Arr size: 44. Fine. Arr size: 48. Fine. Arr size: 52. Fine.
PS C:\Users\Ivan\Desktop\maketest> ./main.exe
Arr size: 4. Fine. Arr size: 8. Fine. Arr size: 12. Fine. Arr size: 16. Fine. Arr size: 20. Fine. Arr size: 24. Fine. Arr size: 28. Fine. Arr size: 32. Fine.
Arr size: 36. Fine. Arr size: 40. Fine. Arr size: 44. Fine. Arr size: 48. Fine. Arr size: 52. Fine.
但是运行makefile
make run
(这是下面的整个文件)
.PHONY: run
run:
./main.exe
它有50%的机会正常工作,或者在大小超过40之前出现错误。
PS C:\Users\Ivan\Desktop\maketest> make run
./main.exe
Arr size: 4. Fine. Arr size: 8. Fine. Arr size: 12. Fine. Arr size: 16. Fine. Arr size: 20. Fine. Arr size: 24. Fine. Arr size: 28. Fine. Arr size: 32. Fine.
Arr size: 36. Fine. Arr size: 40. Fine. Arr size: 44. Allocating new array failed. Arr size: 44. Allocating new array failed. Arr size: 44. Allocating new array failed.
PS C:\Users\Ivan\Desktop\maketest> make run
./main.exe
Arr size: 4. Fine. Arr size: 8. Fine. Arr size: 12. Fine. Arr size: 16. Fine. Arr size: 20. Fine. Arr size: 24. Fine. Arr size: 28. Fine. Arr size: 32. Fine.
Arr size: 36. Fine. Arr size: 40. Fine. Arr size: 44. Fine. Arr size: 48. Fine. Arr size: 52. Fine.
我感谢任何解释! 我希望通过Makefile Portany启动EXE,并了解我的错误。
我认为评论员约翰·布林格(John Bollinger)处于正确的道路上,但这可能比他建议的还要糟糕。分配给
argv
当可能未分配时可能是您的问题。无论如何,这肯定都是一个错误。
这是: argv[1] = malloc(3 * sizeof(char)); argv[1] = "in";
argv[2] = malloc(3 * sizeof(char)); argv[2] = "out";
当然是虚假的。您不仅要将内存分配给没有分配的位置,除非
argv
是3个或更多,否argc
我建议尝试这样的事情:
"in"
您也可能希望在最后释放所有内存:
"out"
,顺便说一句,不需要;总是1.