在运行时调整 char[x] 的大小为 char[y]

3

好的,我希望我能正确地解释这个问题。 我有一个结构体:

typedef struct _MyData
{
   char Data[256];
   int  Index;
} MyData;

现在,我遇到了一个问题。大多数情况下,MyData.Data可以容纳256个字符,但在某些情况下,我需要扩展它所能容纳的字符数量以达到不同的大小。我不能使用指针。有没有办法在运行时调整Data的大小?怎么做?非常感谢提供代码。
请注意:
  1. 我不能使用指针,请不要试图弄清为什么,我只是不能。
  2. 结构体被注入到另一个程序的内存中,因此不能使用指针。
抱歉有点严厉,但我之所以在这里提问,是因为我已经尝试了所有可能行得通的方法。再次说明,我正在寻找代码。目前我对“可能行得通...”或“你考虑过这个...”等内容不感兴趣。感谢您的理解和支持。

13
为什么不能使用指针?动态分配数组是唯一的方法来实现这个。 - anon
1
要么静态地为数据输入保留足够的空间,要么就必须使用指针来动态分配空间。实际上没有其他选择。 - Falaina
在哪里?如果您认为您有答案,请发布一个可工作的代码示例。谢谢。 - wonderer
3
数组的好处在于它们不指向数据。因此,如果你将一个数组放入结构体中,数据将从数组开始位置开始,使得可以将结构体和其中包含的数组作为一个单独的单位来发送来回处理。如果你在那里放一个指针,这将会破坏它的连续性。你应该不再把数组看成指针。你可以写 char *ptr = array;,但这并不代表任何事情:你也可以写 char *ptr = 0;,但整数和指针是两个完全不同的东西。 - Johannes Schaub - litb
1
并不建议使用指针。char Data[];不是指针。你在哪里看到我在我的主要建议中建议使用指针了呢?嗯,无意冒犯,但我对这个问题也已经结束了,除非你问一些更有意义的问题。我不会编写一个多线程+分布式应用程序,只是为了向你展示它的工作原理。 - Johannes Schaub - litb
显示剩余16条评论
11个回答

0

您没有说明Index值的含义。

据我了解,您正在使用所示结构将数据传递给另一个程序。为什么不将您的数据分成256字节的块,然后相应地设置索引值呢?例如:

数据有512字节,因此您可以发送第一个包含前256字节和Index = 0的结构,然后在数组中发送下一个包含接下来256字节的结构并设置Index = 1。


感谢您的评论。我将尝试再次解释这个问题。 我正在尝试让一个不受支持的程序执行一些它原本没有设计的操作。要做到这一点,需要注入一些代码,运行代码并完成操作。有时我需要发送到远程线程的数据较大,因此需要将字符的大小设置为更大的尺寸。我无法分块发送信息,所有信息必须一次性发送。 - wonderer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接