- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个作业。做旧的银行应用程序。我正在尝试使用 malloc 和 realloc 创建一个动态数组,因此它为每个创建的帐户提供了 1 个以上的空间。这只是一个测试,所以根本不完整。当我运行它时,它会询问我输入的名字、姓氏和年龄,然后在第二遍时它会直接跳过名字并直接进入第二个名字。因为 realloc 不起作用。我什至注释掉了 realloc 语句,结果是一样的。我想也许是因为我没有输入 char 数组中允许的完整 15 个字符,编译器会看到剩余的一些内存,认为这对于 2 x 15 元素数组来说不够,但对于一加 3 元素数组来说足够了。与 int scanf 的结果相同(注释掉)。但这并不能解释为什么我可以索引 1如果 realloc 没有创建一个。也无法调试,GDB 一直说 Dwarf Error:编译单元头中的版本错误(是 4,应该是 2)eclipse。
struct account{
char firstName[15];
char lastName[15];
char age[3];
};
void assign(struct account* test, int count){
printf("enter first name \n");
fgets(test->firstName, 15, stdin);
printf("enter lastName\n");
fgets(test->lastName, 15, stdin);
printf("enter age\n");
//scanf("%d", &test->age);
fgets(test->age, 3, stdin);
}
int main(void){
struct account * test = (struct account*)malloc(sizeof(struct account));
int count = 0;
assign(&test[count], count);
count++;
test = realloc(test, (sizeof(struct account) + count + 2));
assign(&test[count], count);
count++;
printf("%s\n", test[0].firstName);
printf("%s\n", test[0].lastName);
printf("%s\n", test[0].age);
printf("%s\n", test[1].firstName);
printf("%s\n", test[1].lastName);
printf("%s\n", test[1].age);
while(1);
return 0;
}
我之前在早期草稿中发布了类似的问题,但事实证明问题不是参数问题
最佳答案
查看realloc的手册页:
The realloc() function changes the size of the memory block pointed to by ptr to size bytes. The contents will be unchanged in the range from the start of the region up to the minimum of the old and new sizes. If the new size is larger than the old size, the added memory will not be initialized. If ptr is NULL, then the call is equivalent to mal‐ loc(size), for all values of size; if size is equal to zero, and ptr is not NULL, then the call is equivalent to free(ptr). Unless ptr is NULL, it must have been returned by an earlier call to malloc(), cal‐ loc(), or realloc(). If the area pointed to was moved, a free(ptr) is done.
很明显,realloc 期望第二个参数是字节而不是整数值。
这条语句:test = realloc(test, (sizeof(struct account) + count + 2));
不符合逻辑,因为count
不是精确计算的字节值。明确地说,您想要做的是分配更多空间。所以你可以这样做: test = realloc(test, sizeof(struct account) * 2);
一次又一次地调用 realloc 也很糟糕,就像您在代码中执行的那样。您可以设置更大的容量,例如20,假设其结构如下:
if(count == capacity){
test = realloc(test, sizeof(struct account) * 2);
capacity = capacity * 2;
}
else{
++count;
/*keep adding*/
}
关于c - 我该怎么做才能导致 realloc 停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859752/
stackoverflow如何得知JavaScript无法正常工作,并能够在页面顶部通知用户? 是否可以判断脚本是否未加载或产生错误,然后仍然能够使用JavaScript生成错误消息? 最佳答案
Xcode 项目方案共享...如何做到这一点? 当我将 Xcode 项目提交到 SVN 时,我发现我创建的方案保存在我的用户名文件夹下,例如 abc.xcodeproj/xcuserdata/_my_
我有这个 SQL: DROP TABLE MISSINGTABLE; CREATE TABLE MISSINGTABLE ( TABLE_NAME VARCHAR2 (70), DESCRIP
我是PHP OOP的初学者,并对使用PHP处理错误的正确方法有些疑问。 例如看这个功能: public function deleteFileFromDisk($fileNameToBeDeleted
YouTube上有很多视频,我们希望为网站访问者提供自动的YouTube成绩单对齐方式。我们想要的几乎就像this example。 但是,我们希望逐个句子对齐,而不是逐个单词自动对齐,例如this
假设,我有 IAsynchronous 接口(interface),它支持两种执行某些操作的方法(“开始/结束”模式): IAsyncResult BeginOperation(AsyncCallba
Hardware Product 1 Product 2 Product 3 Product 4 Product 5 我有这样的结构,我想做一个重新排序界面,用户可以通过单击向上箭头在层次结构中向
假设,我有 IAsynchronous 接口(interface),它支持两种执行某些操作的方法(“开始/结束”模式): IAsyncResult BeginOperation(AsyncCallba
我正在使用 Silverlight 2.0 Unleashed + Silverlight 4.0 Unleashed 学习 Silverlight,好吧,我只是在玩弄它:-) 作为其中的一部分,我正
有人可以解释一下我还是链接-我有512x512图标,但我不知道我需要创建什么图标大小以及如何将它们添加到我的iOS应用中。我需要什么尺寸以及如何添加尺寸? 最佳答案 简而言之:非视网膜iPhone或i
我想在 Java 中模拟以下情况,但我陷入困境: 特别是与客户、预订、航类预订和巴士预订相关的部分。我想要一组客户对象,每个对象都有自己的预订列表(可以是航类预订或巴士预订)。 我计划像下面的测试代码
我在 opencv、Pillow、ImageMagick、subprocess 和 ffmpeg 之间摇摆,作为操作图形数据的一种方式。 ImageMagick 看起来不错而且功能相当强大,但我在 W
我想做类似的事情 SELECT t.subtitle FROM temp t LEFT JOIN ep e ON e.subtitle=t.subtitle AND e.epi
Frame[] test = new Frame[3] {{2,5},{3,6},{4,7}}; 数组初始化器只能用在变量或字段初始化器中。尝试改用新表达式。 这怎么可能? 最佳答案 这里的问题是文字
我不知道如何正确创建第一个返回。它会像这样工作,但问题是 searchtestarrayone 总是有不同的长度,而且它可能非常大。几周前开始了我的 Swift 之旅,所以下面的代码中可能有一些愚蠢的
我有这样的表: NameSteve Martin PhoneXXX Bank account654861/46147 我对表格的相同部
我有一个关于单选按钮的快速问题,以及当用户返回页面时如何设置它们。我现在想要的是能够在他们返回页面时显示所选项目。同一组中有几个,所以我不能使用 getElementByID(遗憾!)。 这是我的 H
我做了一些事情: class Tuple1 { private T1 a; private T2 b; public Tuple1(T1 a, T2 b) {
我目前正在研究我在大学的期末项目,它看起来像 instagram。在 instagram android 应用程序中,您可以点击并按住图像和 boom,显示弹出窗口。但我不知道该怎么做! 最佳答案 您
我正在使用来自 mourner/suncalc 的函数这让我可以得到我们太阳的当前位置。使用 getPosition(),我想在图像上或使用纯 CSS(当然可以缩放到不同的屏幕分辨率和方向)创建动画,
我是一名优秀的程序员,十分优秀!