我创建了一个宏p=1, d=1, q=0, P=0, D=1, Q=1
只是为了避免输入的痛苦。
现在我有一些像这样的代码。
#define ll long long int
当我试图运行时。
我将arr的值视为 4294967296 420906795007 而不是 0 0
memset如何运作?
答案 0 :(得分:5)
问题是你在memset调用中使用了错误的大小:
memset(arr,0,sizeof(arr));
^^^^^^^^^^^
arr
是一个指针,所以sizeof(arr)
在64位机器上等于8,在32位上等于4,你想要的是:
memset(arr,0,sizeof(ll) * size);
答案 1 :(得分:4)
sizeof(arr)
将给出指针的大小,而不是分配的内存。
尝试将此尺寸计算为零清除:
ll size = 2;
ll *arr = new ll[size];
memset(arr,0,sizeof(*arr) * size);