gpt4 book ai didi

c++ - 使用 mpz 时在 tcache 2 中检测到双重释放是什么意思?

转载 作者:行者123 更新时间:2023-11-28 01:18:53 30 4
gpt4 key购买 nike

我使用这个程序来存储一个 mpz 值,但是当我添加一个 0 (4000000000000000000000000000000000000000 而不是 40000000000000000000000000000000000000 -> 38 个 0 而不是 37) 我得到

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;

关于c++ - 使用 mpz 时在 tcache 2 中检测到双重释放是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57616404/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com