【发布时间】:2014-05-14 13:52:29
【问题描述】:
我试图编写类似这样的代码
....
mpz_class *x = NULL;
mpz_class *lValue = NULL;
....
for(int k = 0; k < 2; k++) {
x = NULL;
lValue = NULL;
x = (mpz_class*) malloc(sizeof(mpz_class) * exponentForFactors[k]);
lValue = (mpz_class*) malloc(sizeof(mpz_class) * exponentForFactors[k]);
rValue = 0;
mpz_class exp = (p-1)/q[k];
mpz_powm(lValue[0].get_mpz_t(), B.get_mpz_t(),exp.get_mpz_t(), p.get_mpz_t()); <- this part
exponentForFactors[k] = {3, 1}
此代码将循环两次,因为 k 小于 2。
第一次循环,没问题。没有错误,但是当它是第二个循环时,它会在我指出的位置出现此错误消息。 malloc: *** error for object 0x6000000000000000: pointer being realloc'd was not allocated
*** set a breakpoint in malloc_error_break to debug
我不明白为什么这件事只发生在第二个循环? 任何建议将不胜感激。谢谢。
/////////////////////////
即使是这段代码(第二次循环时)
cout << "lvalue = " << lValue[0] << endl;
有问题。
【问题讨论】:
-
在使用变量之前实际初始化变量怎么样?
标签: c++ memory malloc heap-memory gmp