使用 mpz 时在 tcache 2 中检测到双重释放是什么意思?
What does it mean double free detected in tcache 2 while using mpz?
我使用这个程序来存储一个 mpz 值,但是当我添加一个 0 (
我得到
free(): double free detected in tcache 2
Aborted (core dumped)
#include <iostream>
#include <gmpxx.h>
#include <vector>
using namespace std;
int main(const int argc, const char * const argv[])
{
char *str= (char*)malloc(sizeof(char)*1024);
mpz_class l;
l=40000000000000000000000000000000000000_mpz;
mpz_set_str(l.get_mpz_t(), str, 10);
cout<<endl<<str;
return 0;
}
是否可以存储大数?
谢谢
您的代码有未定义的行为,因为您试图从未初始化的数组 str
.
中分配 l
我猜你把函数弄糊涂了,打算写相反的东西
mpz_get_str(str, 10, l.get_mpz_t());
该代码将 l
分配给 str
。
使用以下代码计算 str
需要多大
size_t size = mpz_sizeinbase(l.get_mpz_t(), 10) + 2;
我使用这个程序来存储一个 mpz 值,但是当我添加一个 0 ( 我得到
free(): double free detected in tcache 2
Aborted (core dumped)
#include <iostream>
#include <gmpxx.h>
#include <vector>
using namespace std;
int main(const int argc, const char * const argv[])
{
char *str= (char*)malloc(sizeof(char)*1024);
mpz_class l;
l=40000000000000000000000000000000000000_mpz;
mpz_set_str(l.get_mpz_t(), str, 10);
cout<<endl<<str;
return 0;
}
是否可以存储大数?
谢谢
您的代码有未定义的行为,因为您试图从未初始化的数组 str
.
l
我猜你把函数弄糊涂了,打算写相反的东西
mpz_get_str(str, 10, l.get_mpz_t());
该代码将 l
分配给 str
。
使用以下代码计算 str
需要多大
size_t size = mpz_sizeinbase(l.get_mpz_t(), 10) + 2;