我正在尝试为100个整数分配空间。但最终得到2并没有线索为什么!我尝试了Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Users\filippo\Desktop\Win32.py", line 5, in Cursor
win32api.SetCursorPos(10,10)
TypeError: SetCursorPos() takes exactly 1 argument (2 given)
和malloc()
,但理解上没有区别。
代码:
calloc
输出:
#define MAX 100
int *arr = (int *)calloc(MAX, sizeof(int)); //same with malloc(MAX * sizeof(int))
printf("MAIN before memset: %d | %d\n",
(int)(sizeof(arr)/sizeof(arr[0])), (int)(sizeof(arr)));
if(!arr) {
fprintf(stderr, "A malloc error occured.\n");
exit(1);
}
memset (arr, 0, MAX);
printf("MAIN: %d\n", (int)(sizeof(arr)/sizeof(arr[0])));
我缺少什么?我只想分配一个数组/指针到100个整数。
答案 0 :(得分:2)
在你的代码中,arr
是一个指针,在指针上使用sizeof
可以得到指针的大小,而不是分配给该指针的内存量。
在您的情况下,sizeof(arr)
为您提供int *
的大小,sizeof(arr[0])
根据您的平台和编译器为您提供int
的大小。
也就是说,你不能直接从指针本身获取已分配内存的大小,你需要自己跟踪它。