问题描述 投票:0回答:1
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

c pointers makefile malloc realloc
1个回答
0
投票

我建议尝试这样的事情:

"in"

您也可能希望在最后释放所有内存:

"out"

我认为在程序结束时释放分配的内存是不必要的,但是我在Asan下运行了代码,如果我不这样做,它会抱怨。
,顺便说一句,不需要;总是1.
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.