【发布时间】:2009-07-20 13:31:14
【问题描述】:
好的,我希望我能正确解释这一点。 我有一个结构:
typedef struct _MyData
{
char Data[256];
int Index;
} MyData;
现在,我遇到了一个问题。大多数时候 MyData.Data 可以使用 256,但在某些情况下,我需要将它可以容纳的字符数量扩展到不同的大小。 我不能使用指针。 有没有办法在运行时调整数据大小?如何? 代码表示赞赏。
谢谢
编辑:
虽然我非常感谢所有的 cmets,但“也许试试这个……”或“那样做”,或者“你是错的……” cmets 没有帮助。代码是这里的帮助。如果您知道答案,请发布代码。
和:
1- 不能使用指针。请不要试图找出原因,我就是不知道 2- 结构被注入到另一个程序的内存中。这就是为什么。没有指针。
很抱歉在这里有点粗鲁,但我在这里问了这个问题,因为我已经尝试了所有认为可能有效的不同方法。 同样,我正在寻找代码。在这一点上,我对“可能工作......”或“你考虑过这个......”不感兴趣
谢谢你,我再次道歉
编辑 2
为什么设置为已回答?
【问题讨论】:
-
为什么不能使用指针?动态分配数组是做到这一点的唯一方法。
-
要么为任何数据输入静态保留足够的空间,要么您必须使用指针来动态分配空间。真的没有其他选择。
-
你已经在使用指针了:P
-
数组的好处是它们没有指向数据。因此,如果您将一个数组放入您的结构中,数据将从数组开始的位置开始,从而允许将结构 + 包含在其中的数组视为一个可以来回发送的单个单元。如果你在那里放置一个指针,这将中断。您应该将自己从将数组视为指针的情况中解脱出来。你可以写
char *ptr = array;并不代表什么:你也可以写char *ptr = 0;,但整数和指针仍然是两个主要的不同的东西。 -
我不建议使用指针。
char Data[];不是指针。你在哪里看到我在我的主要推荐中提出了一个指针?好吧,没有冒犯,但我也完成了这个问题,直到你问一些更有意义的问题。我不会编写多线程+分布式应用程序只是为了向您展示它的工作原理。