【发布时间】:2017-04-07 14:18:30
【问题描述】:
我正在编写一个程序,它接受数组的大小作为参数,然后应该为该大小动态分配内存。
我希望我的程序返回分配的内存大小。
目前我使用argv 读取输入值,然后使用mmap 进行动态分配。我还使用了一个 for 循环来显示数组的每个索引中保存的数字。
我知道可以使用malloc 进行分配,但我无法使用它。
我想我需要从最后一个元素开始检查所有单元格,直到收到 SEGFAULT 信号。
感谢您的帮助。
编辑: 没有库等的短代码......
input = (atoi(argv[1]));
int* arr = mmap(0, input, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, fd, 0);
for (i = 0; i < input; i++) {
arr[i] = i + 1;
}
【问题讨论】:
-
为什么你不能使用malloc?
-
"检查所有单元格,直到我得到 SEGFAULT"。这对我来说看起来很狡猾。如何保证 SEGFAULT?
-
@CherubimAnand 已编辑。
-
@Someprogrammerdude 目前没有崩溃,我得到了所有的值,但我不知道如何获取分配的内存大小。
-
XY 问题和非常错误的方法。不清楚你试图解决什么,但引发未定义的行为绝对是错误的。这就像试图通过将钉子钉入墙上直到产生火花来在墙上找到电线。不要再走那条路了!使用
malloc分配内存有什么问题?您应该提供更多详细信息和minimal reproducible example。
标签: c dynamic-allocation