我使用这个程序来存储一个 mpz 值但是当我添加一个 0 ( 400000000000000000000000000000000000000 而不是 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000
free(): 在 tcache 2 中检测到双空闲
中止(核心转储)
#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;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能存储大量数字?
谢谢
您的代码具有未定义的行为,因为您试图l从未初始化的数组中进行分配str。
我猜你把你的函数搞糊涂了,打算写相反的
mpz_get_str(str, 10, l.get_mpz_t());
Run Code Online (Sandbox Code Playgroud)
该代码分配l给str.
使用以下代码计算str需要多大
size_t size = mpz_sizeinbase(l.get_mpz_t(), 10) + 2;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53003 次 |
| 最近记录: |